new c_src
[nit.git] / c_src / parser._sep.c
index 03b00e5..e767634 100644 (file)
@@ -75,11 +75,11 @@ void parser___Parser___init(val_t  self, val_t  param0, int* init_table) {
   variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
   ATTR_parser___Parser____stack_pos(variable[3]) /*Parser::_stack_pos*/ = variable[4];
   variable[3] = variable[0];
-  ((parser_tables___ParserTable___build_goto_table_t)CALL(variable[3],COLOR_parser_tables___ParserTable___build_goto_table))(variable[3]) /*ParserTable::build_goto_table*/;
+  CALL_parser_tables___ParserTable___build_goto_table(variable[3])(variable[3]) /*ParserTable::build_goto_table*/;
   variable[3] = variable[0];
-  ((parser_tables___ParserTable___build_action_table_t)CALL(variable[3],COLOR_parser_tables___ParserTable___build_action_table))(variable[3]) /*ParserTable::build_action_table*/;
+  CALL_parser_tables___ParserTable___build_action_table(variable[3])(variable[3]) /*ParserTable::build_action_table*/;
   variable[3] = variable[0];
-  ((parser___Parser___build_reduce_table_t)CALL(variable[3],COLOR_parser___Parser___build_reduce_table))(variable[3]) /*Parser::build_reduce_table*/;
+  CALL_parser___Parser___build_reduce_table(variable[3])(variable[3]) /*Parser::build_reduce_table*/;
   return_label1: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Parser].i] = 1;
   tracehead = trace.prev;
@@ -94,7 +94,7 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[4] = variable[0];
-  variable[4] = ((parser___Parser___state_t)CALL(variable[4],COLOR_parser___Parser___state))(variable[4]) /*Parser::state*/;
+  variable[4] = CALL_parser___Parser___state(variable[4])(variable[4]) /*Parser::state*/;
   variable[3] = variable[4];
   variable[5] = variable[0];
   variable[5] = ATTR_parser_tables___ParserTable____goto_table(variable[5]) /*ParserTable::_goto_table*/;
@@ -118,7 +118,7 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   variable[5] = variable[8];
   variable[4] = variable[5];
   variable[5] =  TAG_Int(1);
-  variable[7] = ((array___AbstractArray___length_t)CALL( variable[4] /*table*/,COLOR_abstract_collection___Collection___length))( variable[4] /*table*/) /*AbstractArray::length*/;
+  variable[7] = CALL_abstract_collection___Collection___length( variable[4] /*table*/)( variable[4] /*table*/) /*AbstractArray::length*/;
   variable[7] = TAG_Int(UNTAG_Int(variable[7])/UNTAG_Int( TAG_Int(2)));
   variable[7] = TAG_Int(UNTAG_Int(variable[7])-UNTAG_Int( TAG_Int(1)));
   variable[6] = variable[7];
@@ -243,7 +243,7 @@ void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
   ATTR_parser___Parser____stack_pos(variable[5]) /*Parser::_stack_pos*/ =  variable[4] /*pos*/;
   variable[5] = variable[0];
   variable[5] = ATTR_parser___Parser____stack(variable[5]) /*Parser::_stack*/;
-  variable[5] = ((array___AbstractArray___length_t)CALL(variable[5],COLOR_abstract_collection___Collection___length))(variable[5]) /*AbstractArray::length*/;
+  variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArray::length*/;
   variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*pos*/)<UNTAG_Int(variable[5]));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[6] = variable[0];
@@ -267,13 +267,13 @@ void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
     return_label10: while(false);
     variable[6] = variable[9];
     variable[5] = variable[6];
-    ((parser___State___state__eq_t)CALL( variable[5] /*state*/,COLOR_parser___State___state__eq))( variable[5] /*state*/,  variable[1] /*numstate*/) /*State::state=*/;
-    ((parser___State___nodes__eq_t)CALL( variable[5] /*state*/,COLOR_parser___State___nodes__eq))( variable[5] /*state*/,  variable[2] /*list_node*/) /*State::nodes=*/;
+    CALL_parser___State___state__eq( variable[5] /*state*/)( variable[5] /*state*/,  variable[1] /*numstate*/) /*State::state=*/;
+    CALL_parser___State___nodes__eq( variable[5] /*state*/)( variable[5] /*state*/,  variable[2] /*list_node*/) /*State::nodes=*/;
   } else { /*if*/
     variable[5] = variable[0];
     variable[5] = ATTR_parser___Parser____stack(variable[5]) /*Parser::_stack*/;
     variable[6] = NEW_State_parser___State___init( variable[1] /*numstate*/,  variable[2] /*list_node*/); /*new State*/
-    ((array___AbstractArray___push_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___push))(variable[5], variable[6]) /*AbstractArray::push*/;
+    CALL_abstract_collection___IndexedCollection___push(variable[5])(variable[5], variable[6]) /*AbstractArray::push*/;
   }
   return_label9: while(false);
   tracehead = trace.prev;
@@ -308,7 +308,7 @@ val_t parser___Parser___state(val_t  self) {
   goto return_label12;
   return_label12: while(false);
   variable[2] = variable[6];
-  variable[2] = ((parser___State___state_t)CALL(variable[2],COLOR_parser___State___state))(variable[2]) /*State::state*/;
+  variable[2] = CALL_parser___State___state(variable[2])(variable[2]) /*State::state*/;
   variable[1] = variable[2];
   goto return_label11;
   return_label11: while(false);
@@ -344,7 +344,7 @@ val_t parser___Parser___pop(val_t  self) {
   goto return_label14;
   return_label14: while(false);
   variable[3] = variable[7];
-  variable[3] = ((parser___State___nodes_t)CALL(variable[3],COLOR_parser___State___nodes))(variable[3]) /*State::nodes*/;
+  variable[3] = CALL_parser___State___nodes(variable[3])(variable[3]) /*State::nodes*/;
   variable[2] = variable[3];
   variable[3] = variable[0];
   variable[4] = variable[0];
@@ -365,18 +365,18 @@ val_t parser___Parser___parse(val_t  self) {
   trace.file = LOCATE_parser;
   variable[0] =  self;
   variable[2] = variable[0];
-  ((parser___Parser___push_t)CALL(variable[2],COLOR_parser___Parser___push))(variable[2],  TAG_Int(0),  NIT_NULL /*null*/) /*Parser::push*/;
+  CALL_parser___Parser___push(variable[2])(variable[2],  TAG_Int(0),  NIT_NULL /*null*/) /*Parser::push*/;
   variable[2] =  NIT_NULL /*null*/;
   variable[4] = variable[0];
   variable[4] = ATTR_parser___Parser____lexer(variable[4]) /*Parser::_lexer*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable[5] = ((lexer___Lexer___peek_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___peek))( variable[3] /*lexer*/) /*Lexer::peek*/;
+    variable[5] = CALL_lexer___Lexer___peek( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::peek*/;
     variable[4] = variable[5];
-    variable[6] = ((lexer___Token___pos_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___pos))( variable[4] /*token*/) /*Token::pos*/;
+    variable[6] = CALL_lexer___Token___pos( variable[4] /*token*/)( variable[4] /*token*/) /*Token::pos*/;
     variable[5] = variable[6];
-    variable[7] = ((lexer___Token___line_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___line))( variable[4] /*token*/) /*Token::line*/;
+    variable[7] = CALL_lexer___Token___line( variable[4] /*token*/)( variable[4] /*token*/) /*Token::line*/;
     variable[6] = variable[7];
     variable[7] = TAG_Bool(( variable[4] /*token*/==NIT_NULL) || VAL_ISA( variable[4] /*token*/, COLOR_PError, ID_PError)) /*cast PError*/;
     if (UNTAG_Bool(variable[7])) { /*if*/
@@ -386,12 +386,12 @@ val_t parser___Parser___parse(val_t  self) {
       variable[1] = variable[7];
       goto return_label15;
     }
-    variable[8] = ((lexer___Token___parser_index_t)CALL( variable[4] /*token*/,COLOR_lexer___Token___parser_index))( variable[4] /*token*/) /*Token::parser_index*/;
+    variable[8] = CALL_lexer___Token___parser_index( variable[4] /*token*/)( variable[4] /*token*/) /*Token::parser_index*/;
     variable[7] = variable[8];
     variable[9] = variable[0];
     variable[9] = ATTR_parser_tables___ParserTable____action_table(variable[9]) /*ParserTable::_action_table*/;
     variable[10] = variable[0];
-    variable[10] = ((parser___Parser___state_t)CALL(variable[10],COLOR_parser___Parser___state))(variable[10]) /*Parser::state*/;
+    variable[10] = CALL_parser___Parser___state(variable[10])(variable[10]) /*Parser::state*/;
     variable[11] = variable[9];
     variable[12] = variable[10];
     variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)>=UNTAG_Int( TAG_Int(0)));
@@ -450,7 +450,7 @@ val_t parser___Parser___parse(val_t  self) {
     variable[11] = variable[13];
     variable[10] = variable[11];
     variable[11] =  TAG_Int(1);
-    variable[13] = ((array___AbstractArray___length_t)CALL( variable[8] /*table*/,COLOR_abstract_collection___Collection___length))( variable[8] /*table*/) /*AbstractArray::length*/;
+    variable[13] = CALL_abstract_collection___Collection___length( variable[8] /*table*/)( variable[8] /*table*/) /*AbstractArray::length*/;
     variable[13] = TAG_Int(UNTAG_Int(variable[13])/UNTAG_Int( TAG_Int(3)));
     variable[13] = TAG_Int(UNTAG_Int(variable[13])-UNTAG_Int( TAG_Int(1)));
     variable[12] = variable[13];
@@ -558,8 +558,8 @@ val_t parser___Parser___parse(val_t  self) {
     variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(0)));
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[13] = variable[0];
-      variable[14] = ((lexer___Lexer___next_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___next))( variable[3] /*lexer*/) /*Lexer::next*/;
-      ((parser___Parser___push_t)CALL(variable[13],COLOR_parser___Parser___push))(variable[13],  variable[10] /*action_value*/, variable[14]) /*Parser::push*/;
+      variable[14] = CALL_lexer___Lexer___next( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::next*/;
+      CALL_parser___Parser___push(variable[13])(variable[13],  variable[10] /*action_value*/, variable[14]) /*Parser::push*/;
     } else { /*if*/
       variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(1)));
       if (UNTAG_Bool(variable[13])) { /*if*/
@@ -584,33 +584,33 @@ val_t parser___Parser___parse(val_t  self) {
         return_label25: while(false);
         variable[13] = variable[16];
         variable[14] = variable[0];
-        ((parser___ReduceAction___action_t)CALL(variable[13],COLOR_parser___ReduceAction___action))(variable[13], variable[14]) /*ReduceAction::action*/;
+        CALL_parser___ReduceAction___action(variable[13])(variable[13], variable[14]) /*ReduceAction::action*/;
       } else { /*if*/
         variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(2)));
         if (UNTAG_Bool(variable[13])) { /*if*/
-          variable[14] = ((lexer___Lexer___next_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___next))( variable[3] /*lexer*/) /*Lexer::next*/;
+          variable[14] = CALL_lexer___Lexer___next( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::next*/;
           variable[13] = variable[14];
           variable[14] = TAG_Bool(( variable[13] /*node2*/==NIT_NULL) || VAL_ISA( variable[13] /*node2*/, COLOR_EOF, ID_EOF)) /*cast EOF*/;
           if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 143); nit_exit(1);}
           variable[15] = variable[0];
-          variable[15] = ((parser___Parser___pop_t)CALL(variable[15],COLOR_parser___Parser___pop))(variable[15]) /*Parser::pop*/;
+          variable[15] = CALL_parser___Parser___pop(variable[15])(variable[15]) /*Parser::pop*/;
           variable[14] = variable[15];
           variable[15] = TAG_Bool(( variable[14] /*node1*/==NIT_NULL) || VAL_ISA( variable[14] /*node1*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
           if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 145); nit_exit(1);}
           variable[16] = NEW_Start_parser_prod___Start___init( variable[14] /*node1*/,  variable[13] /*node2*/); /*new Start*/
           variable[15] = variable[16];
           variable[16] = NEW_SearchTokensVisitor_parser___SearchTokensVisitor___init(); /*new SearchTokensVisitor*/
-          ((parser___SearchTokensVisitor___visit_t)CALL(variable[16],COLOR_parser_prod___Visitor___visit))(variable[16],  variable[15] /*node*/) /*SearchTokensVisitor::visit*/;
+          CALL_parser_prod___Visitor___visit(variable[16])(variable[16],  variable[15] /*node*/) /*SearchTokensVisitor::visit*/;
           variable[1] =  variable[15] /*node*/;
           goto return_label15;
         } else { /*if*/
           variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(3)));
           if (UNTAG_Bool(variable[13])) { /*if*/
-            variable[14] = ((lexer___Lexer___filename_t)CALL( variable[3] /*lexer*/,COLOR_lexer___Lexer___filename))( variable[3] /*lexer*/) /*Lexer::filename*/;
+            variable[14] = CALL_lexer___Lexer___filename( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::filename*/;
             variable[15] = variable[0];
-            variable[15] = ((parser_tables___ParserTable___error_messages_t)CALL(variable[15],COLOR_parser_tables___ParserTable___error_messages))(variable[15]) /*ParserTable::error_messages*/;
+            variable[15] = CALL_parser_tables___ParserTable___error_messages(variable[15])(variable[15]) /*ParserTable::error_messages*/;
             variable[16] = variable[0];
-            variable[16] = ((parser_tables___ParserTable___errors_t)CALL(variable[16],COLOR_parser_tables___ParserTable___errors))(variable[16]) /*ParserTable::errors*/;
+            variable[16] = CALL_parser_tables___ParserTable___errors(variable[16])(variable[16]) /*ParserTable::errors*/;
             variable[17] = variable[16];
             variable[18] =  variable[10] /*action_value*/;
             variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)>=UNTAG_Int( TAG_Int(0)));
@@ -677,1313 +677,1313 @@ void parser___Parser___build_reduce_table(val_t  self) {
   variable[2] = variable[0];
   variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(654)); /*new Array[ReduceAction]*/
   variable[4] = NEW_ReduceAction0_parser___ReduceAction0___init(); /*new ReduceAction0*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[4]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
   variable[5] = NEW_ReduceAction1_parser___ReduceAction1___init(); /*new ReduceAction1*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[5]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[5]) /*AbstractArray::add*/;
   variable[6] = NEW_ReduceAction2_parser___ReduceAction2___init(); /*new ReduceAction2*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[6]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[6]) /*AbstractArray::add*/;
   variable[7] = NEW_ReduceAction3_parser___ReduceAction3___init(); /*new ReduceAction3*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[7]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[7]) /*AbstractArray::add*/;
   variable[8] = NEW_ReduceAction4_parser___ReduceAction4___init(); /*new ReduceAction4*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[8]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[8]) /*AbstractArray::add*/;
   variable[9] = NEW_ReduceAction5_parser___ReduceAction5___init(); /*new ReduceAction5*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[9]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[9]) /*AbstractArray::add*/;
   variable[10] = NEW_ReduceAction6_parser___ReduceAction6___init(); /*new ReduceAction6*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[10]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[10]) /*AbstractArray::add*/;
   variable[11] = NEW_ReduceAction7_parser___ReduceAction7___init(); /*new ReduceAction7*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[11]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[11]) /*AbstractArray::add*/;
   variable[12] = NEW_ReduceAction8_parser___ReduceAction8___init(); /*new ReduceAction8*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[12]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[12]) /*AbstractArray::add*/;
   variable[13] = NEW_ReduceAction9_parser___ReduceAction9___init(); /*new ReduceAction9*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[13]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[13]) /*AbstractArray::add*/;
   variable[14] = NEW_ReduceAction10_parser___ReduceAction10___init(); /*new ReduceAction10*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[14]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[14]) /*AbstractArray::add*/;
   variable[15] = NEW_ReduceAction11_parser___ReduceAction11___init(); /*new ReduceAction11*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[15]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[15]) /*AbstractArray::add*/;
   variable[16] = NEW_ReduceAction12_parser___ReduceAction12___init(); /*new ReduceAction12*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[16]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[16]) /*AbstractArray::add*/;
   variable[17] = NEW_ReduceAction13_parser___ReduceAction13___init(); /*new ReduceAction13*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[17]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[17]) /*AbstractArray::add*/;
   variable[18] = NEW_ReduceAction14_parser___ReduceAction14___init(); /*new ReduceAction14*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[18]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[18]) /*AbstractArray::add*/;
   variable[19] = NEW_ReduceAction15_parser___ReduceAction15___init(); /*new ReduceAction15*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[19]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[19]) /*AbstractArray::add*/;
   variable[20] = NEW_ReduceAction16_parser___ReduceAction16___init(); /*new ReduceAction16*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[20]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[20]) /*AbstractArray::add*/;
   variable[21] = NEW_ReduceAction17_parser___ReduceAction17___init(); /*new ReduceAction17*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[21]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[21]) /*AbstractArray::add*/;
   variable[22] = NEW_ReduceAction18_parser___ReduceAction18___init(); /*new ReduceAction18*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[22]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[22]) /*AbstractArray::add*/;
   variable[23] = NEW_ReduceAction19_parser___ReduceAction19___init(); /*new ReduceAction19*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[23]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[23]) /*AbstractArray::add*/;
   variable[24] = NEW_ReduceAction20_parser___ReduceAction20___init(); /*new ReduceAction20*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[24]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[24]) /*AbstractArray::add*/;
   variable[25] = NEW_ReduceAction21_parser___ReduceAction21___init(); /*new ReduceAction21*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[25]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[25]) /*AbstractArray::add*/;
   variable[26] = NEW_ReduceAction22_parser___ReduceAction22___init(); /*new ReduceAction22*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[26]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[26]) /*AbstractArray::add*/;
   variable[27] = NEW_ReduceAction23_parser___ReduceAction23___init(); /*new ReduceAction23*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[27]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[27]) /*AbstractArray::add*/;
   variable[28] = NEW_ReduceAction24_parser___ReduceAction24___init(); /*new ReduceAction24*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[28]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[28]) /*AbstractArray::add*/;
   variable[29] = NEW_ReduceAction25_parser___ReduceAction25___init(); /*new ReduceAction25*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[29]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[29]) /*AbstractArray::add*/;
   variable[30] = NEW_ReduceAction26_parser___ReduceAction26___init(); /*new ReduceAction26*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[30]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[30]) /*AbstractArray::add*/;
   variable[31] = NEW_ReduceAction27_parser___ReduceAction27___init(); /*new ReduceAction27*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[31]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[31]) /*AbstractArray::add*/;
   variable[32] = NEW_ReduceAction28_parser___ReduceAction28___init(); /*new ReduceAction28*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[32]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[32]) /*AbstractArray::add*/;
   variable[33] = NEW_ReduceAction29_parser___ReduceAction29___init(); /*new ReduceAction29*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[33]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[33]) /*AbstractArray::add*/;
   variable[34] = NEW_ReduceAction30_parser___ReduceAction30___init(); /*new ReduceAction30*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[34]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[34]) /*AbstractArray::add*/;
   variable[35] = NEW_ReduceAction31_parser___ReduceAction31___init(); /*new ReduceAction31*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[35]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[35]) /*AbstractArray::add*/;
   variable[36] = NEW_ReduceAction32_parser___ReduceAction32___init(); /*new ReduceAction32*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[36]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[36]) /*AbstractArray::add*/;
   variable[37] = NEW_ReduceAction33_parser___ReduceAction33___init(); /*new ReduceAction33*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[37]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[37]) /*AbstractArray::add*/;
   variable[38] = NEW_ReduceAction34_parser___ReduceAction34___init(); /*new ReduceAction34*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[38]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[38]) /*AbstractArray::add*/;
   variable[39] = NEW_ReduceAction35_parser___ReduceAction35___init(); /*new ReduceAction35*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[39]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[39]) /*AbstractArray::add*/;
   variable[40] = NEW_ReduceAction36_parser___ReduceAction36___init(); /*new ReduceAction36*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[40]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[40]) /*AbstractArray::add*/;
   variable[41] = NEW_ReduceAction37_parser___ReduceAction37___init(); /*new ReduceAction37*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[41]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[41]) /*AbstractArray::add*/;
   variable[42] = NEW_ReduceAction38_parser___ReduceAction38___init(); /*new ReduceAction38*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[42]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[42]) /*AbstractArray::add*/;
   variable[43] = NEW_ReduceAction39_parser___ReduceAction39___init(); /*new ReduceAction39*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[43]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[43]) /*AbstractArray::add*/;
   variable[44] = NEW_ReduceAction40_parser___ReduceAction40___init(); /*new ReduceAction40*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[44]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[44]) /*AbstractArray::add*/;
   variable[45] = NEW_ReduceAction41_parser___ReduceAction41___init(); /*new ReduceAction41*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[45]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[45]) /*AbstractArray::add*/;
   variable[46] = NEW_ReduceAction42_parser___ReduceAction42___init(); /*new ReduceAction42*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[46]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[46]) /*AbstractArray::add*/;
   variable[47] = NEW_ReduceAction43_parser___ReduceAction43___init(); /*new ReduceAction43*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[47]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[47]) /*AbstractArray::add*/;
   variable[48] = NEW_ReduceAction44_parser___ReduceAction44___init(); /*new ReduceAction44*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[48]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[48]) /*AbstractArray::add*/;
   variable[49] = NEW_ReduceAction45_parser___ReduceAction45___init(); /*new ReduceAction45*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[49]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[49]) /*AbstractArray::add*/;
   variable[50] = NEW_ReduceAction46_parser___ReduceAction46___init(); /*new ReduceAction46*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[50]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[50]) /*AbstractArray::add*/;
   variable[51] = NEW_ReduceAction47_parser___ReduceAction47___init(); /*new ReduceAction47*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[51]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[51]) /*AbstractArray::add*/;
   variable[52] = NEW_ReduceAction48_parser___ReduceAction48___init(); /*new ReduceAction48*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[52]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[52]) /*AbstractArray::add*/;
   variable[53] = NEW_ReduceAction49_parser___ReduceAction49___init(); /*new ReduceAction49*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[53]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[53]) /*AbstractArray::add*/;
   variable[54] = NEW_ReduceAction50_parser___ReduceAction50___init(); /*new ReduceAction50*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[54]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[54]) /*AbstractArray::add*/;
   variable[55] = NEW_ReduceAction51_parser___ReduceAction51___init(); /*new ReduceAction51*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[55]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[55]) /*AbstractArray::add*/;
   variable[56] = NEW_ReduceAction52_parser___ReduceAction52___init(); /*new ReduceAction52*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[56]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[56]) /*AbstractArray::add*/;
   variable[57] = NEW_ReduceAction53_parser___ReduceAction53___init(); /*new ReduceAction53*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[57]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[57]) /*AbstractArray::add*/;
   variable[58] = NEW_ReduceAction54_parser___ReduceAction54___init(); /*new ReduceAction54*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[58]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[58]) /*AbstractArray::add*/;
   variable[59] = NEW_ReduceAction55_parser___ReduceAction55___init(); /*new ReduceAction55*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[59]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[59]) /*AbstractArray::add*/;
   variable[60] = NEW_ReduceAction56_parser___ReduceAction56___init(); /*new ReduceAction56*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[60]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[60]) /*AbstractArray::add*/;
   variable[61] = NEW_ReduceAction57_parser___ReduceAction57___init(); /*new ReduceAction57*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[61]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[61]) /*AbstractArray::add*/;
   variable[62] = NEW_ReduceAction58_parser___ReduceAction58___init(); /*new ReduceAction58*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[62]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[62]) /*AbstractArray::add*/;
   variable[63] = NEW_ReduceAction59_parser___ReduceAction59___init(); /*new ReduceAction59*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[63]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[63]) /*AbstractArray::add*/;
   variable[64] = NEW_ReduceAction60_parser___ReduceAction60___init(); /*new ReduceAction60*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[64]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[64]) /*AbstractArray::add*/;
   variable[65] = NEW_ReduceAction61_parser___ReduceAction61___init(); /*new ReduceAction61*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[65]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[65]) /*AbstractArray::add*/;
   variable[66] = NEW_ReduceAction62_parser___ReduceAction62___init(); /*new ReduceAction62*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[66]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[66]) /*AbstractArray::add*/;
   variable[67] = NEW_ReduceAction63_parser___ReduceAction63___init(); /*new ReduceAction63*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[67]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[67]) /*AbstractArray::add*/;
   variable[68] = NEW_ReduceAction64_parser___ReduceAction64___init(); /*new ReduceAction64*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[68]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[68]) /*AbstractArray::add*/;
   variable[69] = NEW_ReduceAction65_parser___ReduceAction65___init(); /*new ReduceAction65*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[69]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[69]) /*AbstractArray::add*/;
   variable[70] = NEW_ReduceAction66_parser___ReduceAction66___init(); /*new ReduceAction66*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[70]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[70]) /*AbstractArray::add*/;
   variable[71] = NEW_ReduceAction67_parser___ReduceAction67___init(); /*new ReduceAction67*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[71]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[71]) /*AbstractArray::add*/;
   variable[72] = NEW_ReduceAction68_parser___ReduceAction68___init(); /*new ReduceAction68*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[72]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[72]) /*AbstractArray::add*/;
   variable[73] = NEW_ReduceAction69_parser___ReduceAction69___init(); /*new ReduceAction69*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[73]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[73]) /*AbstractArray::add*/;
   variable[74] = NEW_ReduceAction70_parser___ReduceAction70___init(); /*new ReduceAction70*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[74]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[74]) /*AbstractArray::add*/;
   variable[75] = NEW_ReduceAction71_parser___ReduceAction71___init(); /*new ReduceAction71*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[75]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[75]) /*AbstractArray::add*/;
   variable[76] = NEW_ReduceAction72_parser___ReduceAction72___init(); /*new ReduceAction72*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[76]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[76]) /*AbstractArray::add*/;
   variable[77] = NEW_ReduceAction73_parser___ReduceAction73___init(); /*new ReduceAction73*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[77]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[77]) /*AbstractArray::add*/;
   variable[78] = NEW_ReduceAction74_parser___ReduceAction74___init(); /*new ReduceAction74*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[78]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[78]) /*AbstractArray::add*/;
   variable[79] = NEW_ReduceAction75_parser___ReduceAction75___init(); /*new ReduceAction75*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[79]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[79]) /*AbstractArray::add*/;
   variable[80] = NEW_ReduceAction76_parser___ReduceAction76___init(); /*new ReduceAction76*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[80]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[80]) /*AbstractArray::add*/;
   variable[81] = NEW_ReduceAction77_parser___ReduceAction77___init(); /*new ReduceAction77*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[81]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[81]) /*AbstractArray::add*/;
   variable[82] = NEW_ReduceAction78_parser___ReduceAction78___init(); /*new ReduceAction78*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[82]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[82]) /*AbstractArray::add*/;
   variable[83] = NEW_ReduceAction79_parser___ReduceAction79___init(); /*new ReduceAction79*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[83]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[83]) /*AbstractArray::add*/;
   variable[84] = NEW_ReduceAction80_parser___ReduceAction80___init(); /*new ReduceAction80*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[84]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[84]) /*AbstractArray::add*/;
   variable[85] = NEW_ReduceAction81_parser___ReduceAction81___init(); /*new ReduceAction81*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[85]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[85]) /*AbstractArray::add*/;
   variable[86] = NEW_ReduceAction82_parser___ReduceAction82___init(); /*new ReduceAction82*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[86]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[86]) /*AbstractArray::add*/;
   variable[87] = NEW_ReduceAction83_parser___ReduceAction83___init(); /*new ReduceAction83*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[87]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[87]) /*AbstractArray::add*/;
   variable[88] = NEW_ReduceAction84_parser___ReduceAction84___init(); /*new ReduceAction84*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[88]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[88]) /*AbstractArray::add*/;
   variable[89] = NEW_ReduceAction85_parser___ReduceAction85___init(); /*new ReduceAction85*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[89]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[89]) /*AbstractArray::add*/;
   variable[90] = NEW_ReduceAction86_parser___ReduceAction86___init(); /*new ReduceAction86*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[90]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[90]) /*AbstractArray::add*/;
   variable[91] = NEW_ReduceAction87_parser___ReduceAction87___init(); /*new ReduceAction87*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[91]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[91]) /*AbstractArray::add*/;
   variable[92] = NEW_ReduceAction88_parser___ReduceAction88___init(); /*new ReduceAction88*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[92]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[92]) /*AbstractArray::add*/;
   variable[93] = NEW_ReduceAction89_parser___ReduceAction89___init(); /*new ReduceAction89*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[93]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[93]) /*AbstractArray::add*/;
   variable[94] = NEW_ReduceAction90_parser___ReduceAction90___init(); /*new ReduceAction90*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[94]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[94]) /*AbstractArray::add*/;
   variable[95] = NEW_ReduceAction91_parser___ReduceAction91___init(); /*new ReduceAction91*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[95]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[95]) /*AbstractArray::add*/;
   variable[96] = NEW_ReduceAction92_parser___ReduceAction92___init(); /*new ReduceAction92*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[96]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[96]) /*AbstractArray::add*/;
   variable[97] = NEW_ReduceAction93_parser___ReduceAction93___init(); /*new ReduceAction93*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[97]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[97]) /*AbstractArray::add*/;
   variable[98] = NEW_ReduceAction94_parser___ReduceAction94___init(); /*new ReduceAction94*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[98]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[98]) /*AbstractArray::add*/;
   variable[99] = NEW_ReduceAction95_parser___ReduceAction95___init(); /*new ReduceAction95*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[99]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[99]) /*AbstractArray::add*/;
   variable[100] = NEW_ReduceAction96_parser___ReduceAction96___init(); /*new ReduceAction96*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[100]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[100]) /*AbstractArray::add*/;
   variable[101] = NEW_ReduceAction97_parser___ReduceAction97___init(); /*new ReduceAction97*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[101]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[101]) /*AbstractArray::add*/;
   variable[102] = NEW_ReduceAction98_parser___ReduceAction98___init(); /*new ReduceAction98*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[102]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[102]) /*AbstractArray::add*/;
   variable[103] = NEW_ReduceAction99_parser___ReduceAction99___init(); /*new ReduceAction99*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[103]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[103]) /*AbstractArray::add*/;
   variable[104] = NEW_ReduceAction100_parser___ReduceAction100___init(); /*new ReduceAction100*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[104]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[104]) /*AbstractArray::add*/;
   variable[105] = NEW_ReduceAction101_parser___ReduceAction101___init(); /*new ReduceAction101*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[105]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[105]) /*AbstractArray::add*/;
   variable[106] = NEW_ReduceAction102_parser___ReduceAction102___init(); /*new ReduceAction102*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[106]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[106]) /*AbstractArray::add*/;
   variable[107] = NEW_ReduceAction103_parser___ReduceAction103___init(); /*new ReduceAction103*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[107]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[107]) /*AbstractArray::add*/;
   variable[108] = NEW_ReduceAction104_parser___ReduceAction104___init(); /*new ReduceAction104*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[108]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[108]) /*AbstractArray::add*/;
   variable[109] = NEW_ReduceAction105_parser___ReduceAction105___init(); /*new ReduceAction105*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[109]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[109]) /*AbstractArray::add*/;
   variable[110] = NEW_ReduceAction106_parser___ReduceAction106___init(); /*new ReduceAction106*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[110]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[110]) /*AbstractArray::add*/;
   variable[111] = NEW_ReduceAction107_parser___ReduceAction107___init(); /*new ReduceAction107*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[111]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[111]) /*AbstractArray::add*/;
   variable[112] = NEW_ReduceAction108_parser___ReduceAction108___init(); /*new ReduceAction108*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[112]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[112]) /*AbstractArray::add*/;
   variable[113] = NEW_ReduceAction109_parser___ReduceAction109___init(); /*new ReduceAction109*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[113]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[113]) /*AbstractArray::add*/;
   variable[114] = NEW_ReduceAction110_parser___ReduceAction110___init(); /*new ReduceAction110*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[114]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[114]) /*AbstractArray::add*/;
   variable[115] = NEW_ReduceAction111_parser___ReduceAction111___init(); /*new ReduceAction111*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[115]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[115]) /*AbstractArray::add*/;
   variable[116] = NEW_ReduceAction112_parser___ReduceAction112___init(); /*new ReduceAction112*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[116]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[116]) /*AbstractArray::add*/;
   variable[117] = NEW_ReduceAction113_parser___ReduceAction113___init(); /*new ReduceAction113*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[117]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[117]) /*AbstractArray::add*/;
   variable[118] = NEW_ReduceAction114_parser___ReduceAction114___init(); /*new ReduceAction114*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[118]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[118]) /*AbstractArray::add*/;
   variable[119] = NEW_ReduceAction115_parser___ReduceAction115___init(); /*new ReduceAction115*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[119]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[119]) /*AbstractArray::add*/;
   variable[120] = NEW_ReduceAction116_parser___ReduceAction116___init(); /*new ReduceAction116*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[120]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[120]) /*AbstractArray::add*/;
   variable[121] = NEW_ReduceAction117_parser___ReduceAction117___init(); /*new ReduceAction117*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[121]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[121]) /*AbstractArray::add*/;
   variable[122] = NEW_ReduceAction118_parser___ReduceAction118___init(); /*new ReduceAction118*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[122]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[122]) /*AbstractArray::add*/;
   variable[123] = NEW_ReduceAction119_parser___ReduceAction119___init(); /*new ReduceAction119*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[123]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[123]) /*AbstractArray::add*/;
   variable[124] = NEW_ReduceAction120_parser___ReduceAction120___init(); /*new ReduceAction120*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[124]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[124]) /*AbstractArray::add*/;
   variable[125] = NEW_ReduceAction121_parser___ReduceAction121___init(); /*new ReduceAction121*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[125]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[125]) /*AbstractArray::add*/;
   variable[126] = NEW_ReduceAction122_parser___ReduceAction122___init(); /*new ReduceAction122*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[126]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[126]) /*AbstractArray::add*/;
   variable[127] = NEW_ReduceAction123_parser___ReduceAction123___init(); /*new ReduceAction123*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[127]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[127]) /*AbstractArray::add*/;
   variable[128] = NEW_ReduceAction124_parser___ReduceAction124___init(); /*new ReduceAction124*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[128]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[128]) /*AbstractArray::add*/;
   variable[129] = NEW_ReduceAction125_parser___ReduceAction125___init(); /*new ReduceAction125*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[129]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[129]) /*AbstractArray::add*/;
   variable[130] = NEW_ReduceAction126_parser___ReduceAction126___init(); /*new ReduceAction126*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[130]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[130]) /*AbstractArray::add*/;
   variable[131] = NEW_ReduceAction127_parser___ReduceAction127___init(); /*new ReduceAction127*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[131]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[131]) /*AbstractArray::add*/;
   variable[132] = NEW_ReduceAction128_parser___ReduceAction128___init(); /*new ReduceAction128*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[132]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[132]) /*AbstractArray::add*/;
   variable[133] = NEW_ReduceAction129_parser___ReduceAction129___init(); /*new ReduceAction129*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[133]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[133]) /*AbstractArray::add*/;
   variable[134] = NEW_ReduceAction130_parser___ReduceAction130___init(); /*new ReduceAction130*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[134]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[134]) /*AbstractArray::add*/;
   variable[135] = NEW_ReduceAction131_parser___ReduceAction131___init(); /*new ReduceAction131*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[135]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[135]) /*AbstractArray::add*/;
   variable[136] = NEW_ReduceAction132_parser___ReduceAction132___init(); /*new ReduceAction132*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[136]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[136]) /*AbstractArray::add*/;
   variable[137] = NEW_ReduceAction133_parser___ReduceAction133___init(); /*new ReduceAction133*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[137]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[137]) /*AbstractArray::add*/;
   variable[138] = NEW_ReduceAction134_parser___ReduceAction134___init(); /*new ReduceAction134*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[138]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[138]) /*AbstractArray::add*/;
   variable[139] = NEW_ReduceAction135_parser___ReduceAction135___init(); /*new ReduceAction135*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[139]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[139]) /*AbstractArray::add*/;
   variable[140] = NEW_ReduceAction136_parser___ReduceAction136___init(); /*new ReduceAction136*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[140]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[140]) /*AbstractArray::add*/;
   variable[141] = NEW_ReduceAction137_parser___ReduceAction137___init(); /*new ReduceAction137*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[141]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[141]) /*AbstractArray::add*/;
   variable[142] = NEW_ReduceAction138_parser___ReduceAction138___init(); /*new ReduceAction138*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[142]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[142]) /*AbstractArray::add*/;
   variable[143] = NEW_ReduceAction139_parser___ReduceAction139___init(); /*new ReduceAction139*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[143]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[143]) /*AbstractArray::add*/;
   variable[144] = NEW_ReduceAction140_parser___ReduceAction140___init(); /*new ReduceAction140*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[144]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[144]) /*AbstractArray::add*/;
   variable[145] = NEW_ReduceAction141_parser___ReduceAction141___init(); /*new ReduceAction141*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[145]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[145]) /*AbstractArray::add*/;
   variable[146] = NEW_ReduceAction142_parser___ReduceAction142___init(); /*new ReduceAction142*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[146]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[146]) /*AbstractArray::add*/;
   variable[147] = NEW_ReduceAction143_parser___ReduceAction143___init(); /*new ReduceAction143*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[147]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[147]) /*AbstractArray::add*/;
   variable[148] = NEW_ReduceAction144_parser___ReduceAction144___init(); /*new ReduceAction144*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[148]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[148]) /*AbstractArray::add*/;
   variable[149] = NEW_ReduceAction145_parser___ReduceAction145___init(); /*new ReduceAction145*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[149]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[149]) /*AbstractArray::add*/;
   variable[150] = NEW_ReduceAction146_parser___ReduceAction146___init(); /*new ReduceAction146*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[150]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[150]) /*AbstractArray::add*/;
   variable[151] = NEW_ReduceAction147_parser___ReduceAction147___init(); /*new ReduceAction147*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[151]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[151]) /*AbstractArray::add*/;
   variable[152] = NEW_ReduceAction148_parser___ReduceAction148___init(); /*new ReduceAction148*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[152]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[152]) /*AbstractArray::add*/;
   variable[153] = NEW_ReduceAction149_parser___ReduceAction149___init(); /*new ReduceAction149*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[153]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[153]) /*AbstractArray::add*/;
   variable[154] = NEW_ReduceAction150_parser___ReduceAction150___init(); /*new ReduceAction150*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[154]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[154]) /*AbstractArray::add*/;
   variable[155] = NEW_ReduceAction151_parser___ReduceAction151___init(); /*new ReduceAction151*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[155]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[155]) /*AbstractArray::add*/;
   variable[156] = NEW_ReduceAction152_parser___ReduceAction152___init(); /*new ReduceAction152*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[156]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[156]) /*AbstractArray::add*/;
   variable[157] = NEW_ReduceAction153_parser___ReduceAction153___init(); /*new ReduceAction153*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[157]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[157]) /*AbstractArray::add*/;
   variable[158] = NEW_ReduceAction154_parser___ReduceAction154___init(); /*new ReduceAction154*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[158]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[158]) /*AbstractArray::add*/;
   variable[159] = NEW_ReduceAction155_parser___ReduceAction155___init(); /*new ReduceAction155*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[159]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[159]) /*AbstractArray::add*/;
   variable[160] = NEW_ReduceAction156_parser___ReduceAction156___init(); /*new ReduceAction156*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[160]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[160]) /*AbstractArray::add*/;
   variable[161] = NEW_ReduceAction157_parser___ReduceAction157___init(); /*new ReduceAction157*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[161]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[161]) /*AbstractArray::add*/;
   variable[162] = NEW_ReduceAction158_parser___ReduceAction158___init(); /*new ReduceAction158*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[162]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[162]) /*AbstractArray::add*/;
   variable[163] = NEW_ReduceAction159_parser___ReduceAction159___init(); /*new ReduceAction159*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[163]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[163]) /*AbstractArray::add*/;
   variable[164] = NEW_ReduceAction160_parser___ReduceAction160___init(); /*new ReduceAction160*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[164]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[164]) /*AbstractArray::add*/;
   variable[165] = NEW_ReduceAction161_parser___ReduceAction161___init(); /*new ReduceAction161*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[165]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[165]) /*AbstractArray::add*/;
   variable[166] = NEW_ReduceAction162_parser___ReduceAction162___init(); /*new ReduceAction162*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[166]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[166]) /*AbstractArray::add*/;
   variable[167] = NEW_ReduceAction163_parser___ReduceAction163___init(); /*new ReduceAction163*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[167]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[167]) /*AbstractArray::add*/;
   variable[168] = NEW_ReduceAction164_parser___ReduceAction164___init(); /*new ReduceAction164*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[168]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[168]) /*AbstractArray::add*/;
   variable[169] = NEW_ReduceAction165_parser___ReduceAction165___init(); /*new ReduceAction165*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[169]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[169]) /*AbstractArray::add*/;
   variable[170] = NEW_ReduceAction166_parser___ReduceAction166___init(); /*new ReduceAction166*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[170]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[170]) /*AbstractArray::add*/;
   variable[171] = NEW_ReduceAction167_parser___ReduceAction167___init(); /*new ReduceAction167*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[171]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[171]) /*AbstractArray::add*/;
   variable[172] = NEW_ReduceAction168_parser___ReduceAction168___init(); /*new ReduceAction168*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[172]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[172]) /*AbstractArray::add*/;
   variable[173] = NEW_ReduceAction169_parser___ReduceAction169___init(); /*new ReduceAction169*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[173]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[173]) /*AbstractArray::add*/;
   variable[174] = NEW_ReduceAction170_parser___ReduceAction170___init(); /*new ReduceAction170*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[174]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[174]) /*AbstractArray::add*/;
   variable[175] = NEW_ReduceAction171_parser___ReduceAction171___init(); /*new ReduceAction171*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[175]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[175]) /*AbstractArray::add*/;
   variable[176] = NEW_ReduceAction172_parser___ReduceAction172___init(); /*new ReduceAction172*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[176]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[176]) /*AbstractArray::add*/;
   variable[177] = NEW_ReduceAction173_parser___ReduceAction173___init(); /*new ReduceAction173*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[177]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[177]) /*AbstractArray::add*/;
   variable[178] = NEW_ReduceAction174_parser___ReduceAction174___init(); /*new ReduceAction174*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[178]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[178]) /*AbstractArray::add*/;
   variable[179] = NEW_ReduceAction175_parser___ReduceAction175___init(); /*new ReduceAction175*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[179]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[179]) /*AbstractArray::add*/;
   variable[180] = NEW_ReduceAction176_parser___ReduceAction176___init(); /*new ReduceAction176*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[180]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[180]) /*AbstractArray::add*/;
   variable[181] = NEW_ReduceAction177_parser___ReduceAction177___init(); /*new ReduceAction177*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[181]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[181]) /*AbstractArray::add*/;
   variable[182] = NEW_ReduceAction178_parser___ReduceAction178___init(); /*new ReduceAction178*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[182]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[182]) /*AbstractArray::add*/;
   variable[183] = NEW_ReduceAction179_parser___ReduceAction179___init(); /*new ReduceAction179*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[183]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[183]) /*AbstractArray::add*/;
   variable[184] = NEW_ReduceAction180_parser___ReduceAction180___init(); /*new ReduceAction180*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[184]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[184]) /*AbstractArray::add*/;
   variable[185] = NEW_ReduceAction181_parser___ReduceAction181___init(); /*new ReduceAction181*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[185]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[185]) /*AbstractArray::add*/;
   variable[186] = NEW_ReduceAction182_parser___ReduceAction182___init(); /*new ReduceAction182*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[186]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[186]) /*AbstractArray::add*/;
   variable[187] = NEW_ReduceAction183_parser___ReduceAction183___init(); /*new ReduceAction183*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[187]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[187]) /*AbstractArray::add*/;
   variable[188] = NEW_ReduceAction184_parser___ReduceAction184___init(); /*new ReduceAction184*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[188]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[188]) /*AbstractArray::add*/;
   variable[189] = NEW_ReduceAction185_parser___ReduceAction185___init(); /*new ReduceAction185*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[189]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[189]) /*AbstractArray::add*/;
   variable[190] = NEW_ReduceAction186_parser___ReduceAction186___init(); /*new ReduceAction186*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[190]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[190]) /*AbstractArray::add*/;
   variable[191] = NEW_ReduceAction187_parser___ReduceAction187___init(); /*new ReduceAction187*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[191]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[191]) /*AbstractArray::add*/;
   variable[192] = NEW_ReduceAction188_parser___ReduceAction188___init(); /*new ReduceAction188*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[192]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[192]) /*AbstractArray::add*/;
   variable[193] = NEW_ReduceAction189_parser___ReduceAction189___init(); /*new ReduceAction189*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[193]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[193]) /*AbstractArray::add*/;
   variable[194] = NEW_ReduceAction190_parser___ReduceAction190___init(); /*new ReduceAction190*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[194]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[194]) /*AbstractArray::add*/;
   variable[195] = NEW_ReduceAction191_parser___ReduceAction191___init(); /*new ReduceAction191*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[195]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[195]) /*AbstractArray::add*/;
   variable[196] = NEW_ReduceAction192_parser___ReduceAction192___init(); /*new ReduceAction192*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[196]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[196]) /*AbstractArray::add*/;
   variable[197] = NEW_ReduceAction193_parser___ReduceAction193___init(); /*new ReduceAction193*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[197]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[197]) /*AbstractArray::add*/;
   variable[198] = NEW_ReduceAction194_parser___ReduceAction194___init(); /*new ReduceAction194*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[198]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[198]) /*AbstractArray::add*/;
   variable[199] = NEW_ReduceAction195_parser___ReduceAction195___init(); /*new ReduceAction195*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[199]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[199]) /*AbstractArray::add*/;
   variable[200] = NEW_ReduceAction196_parser___ReduceAction196___init(); /*new ReduceAction196*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[200]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[200]) /*AbstractArray::add*/;
   variable[201] = NEW_ReduceAction197_parser___ReduceAction197___init(); /*new ReduceAction197*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[201]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[201]) /*AbstractArray::add*/;
   variable[202] = NEW_ReduceAction198_parser___ReduceAction198___init(); /*new ReduceAction198*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[202]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[202]) /*AbstractArray::add*/;
   variable[203] = NEW_ReduceAction199_parser___ReduceAction199___init(); /*new ReduceAction199*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[203]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[203]) /*AbstractArray::add*/;
   variable[204] = NEW_ReduceAction200_parser___ReduceAction200___init(); /*new ReduceAction200*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[204]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[204]) /*AbstractArray::add*/;
   variable[205] = NEW_ReduceAction201_parser___ReduceAction201___init(); /*new ReduceAction201*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[205]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[205]) /*AbstractArray::add*/;
   variable[206] = NEW_ReduceAction202_parser___ReduceAction202___init(); /*new ReduceAction202*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[206]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[206]) /*AbstractArray::add*/;
   variable[207] = NEW_ReduceAction203_parser___ReduceAction203___init(); /*new ReduceAction203*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[207]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[207]) /*AbstractArray::add*/;
   variable[208] = NEW_ReduceAction204_parser___ReduceAction204___init(); /*new ReduceAction204*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[208]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[208]) /*AbstractArray::add*/;
   variable[209] = NEW_ReduceAction205_parser___ReduceAction205___init(); /*new ReduceAction205*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[209]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[209]) /*AbstractArray::add*/;
   variable[210] = NEW_ReduceAction206_parser___ReduceAction206___init(); /*new ReduceAction206*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[210]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[210]) /*AbstractArray::add*/;
   variable[211] = NEW_ReduceAction207_parser___ReduceAction207___init(); /*new ReduceAction207*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[211]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[211]) /*AbstractArray::add*/;
   variable[212] = NEW_ReduceAction208_parser___ReduceAction208___init(); /*new ReduceAction208*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[212]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[212]) /*AbstractArray::add*/;
   variable[213] = NEW_ReduceAction209_parser___ReduceAction209___init(); /*new ReduceAction209*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[213]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[213]) /*AbstractArray::add*/;
   variable[214] = NEW_ReduceAction210_parser___ReduceAction210___init(); /*new ReduceAction210*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[214]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[214]) /*AbstractArray::add*/;
   variable[215] = NEW_ReduceAction211_parser___ReduceAction211___init(); /*new ReduceAction211*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[215]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[215]) /*AbstractArray::add*/;
   variable[216] = NEW_ReduceAction212_parser___ReduceAction212___init(); /*new ReduceAction212*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[216]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[216]) /*AbstractArray::add*/;
   variable[217] = NEW_ReduceAction213_parser___ReduceAction213___init(); /*new ReduceAction213*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[217]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[217]) /*AbstractArray::add*/;
   variable[218] = NEW_ReduceAction214_parser___ReduceAction214___init(); /*new ReduceAction214*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[218]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[218]) /*AbstractArray::add*/;
   variable[219] = NEW_ReduceAction215_parser___ReduceAction215___init(); /*new ReduceAction215*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[219]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[219]) /*AbstractArray::add*/;
   variable[220] = NEW_ReduceAction216_parser___ReduceAction216___init(); /*new ReduceAction216*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[220]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[220]) /*AbstractArray::add*/;
   variable[221] = NEW_ReduceAction217_parser___ReduceAction217___init(); /*new ReduceAction217*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[221]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[221]) /*AbstractArray::add*/;
   variable[222] = NEW_ReduceAction218_parser___ReduceAction218___init(); /*new ReduceAction218*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[222]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[222]) /*AbstractArray::add*/;
   variable[223] = NEW_ReduceAction219_parser___ReduceAction219___init(); /*new ReduceAction219*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[223]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[223]) /*AbstractArray::add*/;
   variable[224] = NEW_ReduceAction220_parser___ReduceAction220___init(); /*new ReduceAction220*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[224]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[224]) /*AbstractArray::add*/;
   variable[225] = NEW_ReduceAction221_parser___ReduceAction221___init(); /*new ReduceAction221*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[225]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[225]) /*AbstractArray::add*/;
   variable[226] = NEW_ReduceAction222_parser___ReduceAction222___init(); /*new ReduceAction222*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[226]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[226]) /*AbstractArray::add*/;
   variable[227] = NEW_ReduceAction223_parser___ReduceAction223___init(); /*new ReduceAction223*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[227]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[227]) /*AbstractArray::add*/;
   variable[228] = NEW_ReduceAction224_parser___ReduceAction224___init(); /*new ReduceAction224*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[228]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[228]) /*AbstractArray::add*/;
   variable[229] = NEW_ReduceAction225_parser___ReduceAction225___init(); /*new ReduceAction225*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[229]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[229]) /*AbstractArray::add*/;
   variable[230] = NEW_ReduceAction226_parser___ReduceAction226___init(); /*new ReduceAction226*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[230]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[230]) /*AbstractArray::add*/;
   variable[231] = NEW_ReduceAction227_parser___ReduceAction227___init(); /*new ReduceAction227*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[231]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[231]) /*AbstractArray::add*/;
   variable[232] = NEW_ReduceAction228_parser___ReduceAction228___init(); /*new ReduceAction228*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[232]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[232]) /*AbstractArray::add*/;
   variable[233] = NEW_ReduceAction229_parser___ReduceAction229___init(); /*new ReduceAction229*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[233]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[233]) /*AbstractArray::add*/;
   variable[234] = NEW_ReduceAction230_parser___ReduceAction230___init(); /*new ReduceAction230*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[234]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[234]) /*AbstractArray::add*/;
   variable[235] = NEW_ReduceAction231_parser___ReduceAction231___init(); /*new ReduceAction231*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[235]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[235]) /*AbstractArray::add*/;
   variable[236] = NEW_ReduceAction232_parser___ReduceAction232___init(); /*new ReduceAction232*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[236]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[236]) /*AbstractArray::add*/;
   variable[237] = NEW_ReduceAction233_parser___ReduceAction233___init(); /*new ReduceAction233*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[237]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[237]) /*AbstractArray::add*/;
   variable[238] = NEW_ReduceAction234_parser___ReduceAction234___init(); /*new ReduceAction234*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[238]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[238]) /*AbstractArray::add*/;
   variable[239] = NEW_ReduceAction235_parser___ReduceAction235___init(); /*new ReduceAction235*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[239]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[239]) /*AbstractArray::add*/;
   variable[240] = NEW_ReduceAction236_parser___ReduceAction236___init(); /*new ReduceAction236*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[240]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[240]) /*AbstractArray::add*/;
   variable[241] = NEW_ReduceAction237_parser___ReduceAction237___init(); /*new ReduceAction237*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[241]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[241]) /*AbstractArray::add*/;
   variable[242] = NEW_ReduceAction238_parser___ReduceAction238___init(); /*new ReduceAction238*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[242]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[242]) /*AbstractArray::add*/;
   variable[243] = NEW_ReduceAction239_parser___ReduceAction239___init(); /*new ReduceAction239*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[243]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[243]) /*AbstractArray::add*/;
   variable[244] = NEW_ReduceAction240_parser___ReduceAction240___init(); /*new ReduceAction240*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[244]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[244]) /*AbstractArray::add*/;
   variable[245] = NEW_ReduceAction241_parser___ReduceAction241___init(); /*new ReduceAction241*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[245]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[245]) /*AbstractArray::add*/;
   variable[246] = NEW_ReduceAction242_parser___ReduceAction242___init(); /*new ReduceAction242*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[246]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[246]) /*AbstractArray::add*/;
   variable[247] = NEW_ReduceAction243_parser___ReduceAction243___init(); /*new ReduceAction243*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[247]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[247]) /*AbstractArray::add*/;
   variable[248] = NEW_ReduceAction244_parser___ReduceAction244___init(); /*new ReduceAction244*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[248]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[248]) /*AbstractArray::add*/;
   variable[249] = NEW_ReduceAction245_parser___ReduceAction245___init(); /*new ReduceAction245*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[249]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[249]) /*AbstractArray::add*/;
   variable[250] = NEW_ReduceAction246_parser___ReduceAction246___init(); /*new ReduceAction246*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[250]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[250]) /*AbstractArray::add*/;
   variable[251] = NEW_ReduceAction247_parser___ReduceAction247___init(); /*new ReduceAction247*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[251]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[251]) /*AbstractArray::add*/;
   variable[252] = NEW_ReduceAction248_parser___ReduceAction248___init(); /*new ReduceAction248*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[252]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[252]) /*AbstractArray::add*/;
   variable[253] = NEW_ReduceAction249_parser___ReduceAction249___init(); /*new ReduceAction249*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[253]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[253]) /*AbstractArray::add*/;
   variable[254] = NEW_ReduceAction250_parser___ReduceAction250___init(); /*new ReduceAction250*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[254]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[254]) /*AbstractArray::add*/;
   variable[255] = NEW_ReduceAction251_parser___ReduceAction251___init(); /*new ReduceAction251*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[255]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[255]) /*AbstractArray::add*/;
   variable[256] = NEW_ReduceAction252_parser___ReduceAction252___init(); /*new ReduceAction252*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[256]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[256]) /*AbstractArray::add*/;
   variable[257] = NEW_ReduceAction253_parser___ReduceAction253___init(); /*new ReduceAction253*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[257]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[257]) /*AbstractArray::add*/;
   variable[258] = NEW_ReduceAction254_parser___ReduceAction254___init(); /*new ReduceAction254*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[258]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[258]) /*AbstractArray::add*/;
   variable[259] = NEW_ReduceAction255_parser___ReduceAction255___init(); /*new ReduceAction255*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[259]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[259]) /*AbstractArray::add*/;
   variable[260] = NEW_ReduceAction256_parser___ReduceAction256___init(); /*new ReduceAction256*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[260]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[260]) /*AbstractArray::add*/;
   variable[261] = NEW_ReduceAction257_parser___ReduceAction257___init(); /*new ReduceAction257*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[261]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[261]) /*AbstractArray::add*/;
   variable[262] = NEW_ReduceAction258_parser___ReduceAction258___init(); /*new ReduceAction258*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[262]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[262]) /*AbstractArray::add*/;
   variable[263] = NEW_ReduceAction259_parser___ReduceAction259___init(); /*new ReduceAction259*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[263]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[263]) /*AbstractArray::add*/;
   variable[264] = NEW_ReduceAction260_parser___ReduceAction260___init(); /*new ReduceAction260*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[264]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[264]) /*AbstractArray::add*/;
   variable[265] = NEW_ReduceAction261_parser___ReduceAction261___init(); /*new ReduceAction261*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[265]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[265]) /*AbstractArray::add*/;
   variable[266] = NEW_ReduceAction262_parser___ReduceAction262___init(); /*new ReduceAction262*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[266]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[266]) /*AbstractArray::add*/;
   variable[267] = NEW_ReduceAction263_parser___ReduceAction263___init(); /*new ReduceAction263*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[267]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[267]) /*AbstractArray::add*/;
   variable[268] = NEW_ReduceAction264_parser___ReduceAction264___init(); /*new ReduceAction264*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[268]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[268]) /*AbstractArray::add*/;
   variable[269] = NEW_ReduceAction265_parser___ReduceAction265___init(); /*new ReduceAction265*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[269]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[269]) /*AbstractArray::add*/;
   variable[270] = NEW_ReduceAction266_parser___ReduceAction266___init(); /*new ReduceAction266*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[270]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[270]) /*AbstractArray::add*/;
   variable[271] = NEW_ReduceAction267_parser___ReduceAction267___init(); /*new ReduceAction267*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[271]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[271]) /*AbstractArray::add*/;
   variable[272] = NEW_ReduceAction268_parser___ReduceAction268___init(); /*new ReduceAction268*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[272]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[272]) /*AbstractArray::add*/;
   variable[273] = NEW_ReduceAction269_parser___ReduceAction269___init(); /*new ReduceAction269*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[273]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[273]) /*AbstractArray::add*/;
   variable[274] = NEW_ReduceAction270_parser___ReduceAction270___init(); /*new ReduceAction270*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[274]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[274]) /*AbstractArray::add*/;
   variable[275] = NEW_ReduceAction271_parser___ReduceAction271___init(); /*new ReduceAction271*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[275]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[275]) /*AbstractArray::add*/;
   variable[276] = NEW_ReduceAction272_parser___ReduceAction272___init(); /*new ReduceAction272*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[276]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[276]) /*AbstractArray::add*/;
   variable[277] = NEW_ReduceAction273_parser___ReduceAction273___init(); /*new ReduceAction273*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[277]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[277]) /*AbstractArray::add*/;
   variable[278] = NEW_ReduceAction274_parser___ReduceAction274___init(); /*new ReduceAction274*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[278]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[278]) /*AbstractArray::add*/;
   variable[279] = NEW_ReduceAction275_parser___ReduceAction275___init(); /*new ReduceAction275*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[279]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[279]) /*AbstractArray::add*/;
   variable[280] = NEW_ReduceAction276_parser___ReduceAction276___init(); /*new ReduceAction276*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[280]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[280]) /*AbstractArray::add*/;
   variable[281] = NEW_ReduceAction277_parser___ReduceAction277___init(); /*new ReduceAction277*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[281]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[281]) /*AbstractArray::add*/;
   variable[282] = NEW_ReduceAction278_parser___ReduceAction278___init(); /*new ReduceAction278*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[282]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[282]) /*AbstractArray::add*/;
   variable[283] = NEW_ReduceAction279_parser___ReduceAction279___init(); /*new ReduceAction279*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[283]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[283]) /*AbstractArray::add*/;
   variable[284] = NEW_ReduceAction280_parser___ReduceAction280___init(); /*new ReduceAction280*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[284]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[284]) /*AbstractArray::add*/;
   variable[285] = NEW_ReduceAction281_parser___ReduceAction281___init(); /*new ReduceAction281*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[285]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[285]) /*AbstractArray::add*/;
   variable[286] = NEW_ReduceAction282_parser___ReduceAction282___init(); /*new ReduceAction282*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[286]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[286]) /*AbstractArray::add*/;
   variable[287] = NEW_ReduceAction283_parser___ReduceAction283___init(); /*new ReduceAction283*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[287]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[287]) /*AbstractArray::add*/;
   variable[288] = NEW_ReduceAction284_parser___ReduceAction284___init(); /*new ReduceAction284*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[288]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[288]) /*AbstractArray::add*/;
   variable[289] = NEW_ReduceAction285_parser___ReduceAction285___init(); /*new ReduceAction285*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[289]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[289]) /*AbstractArray::add*/;
   variable[290] = NEW_ReduceAction286_parser___ReduceAction286___init(); /*new ReduceAction286*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[290]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[290]) /*AbstractArray::add*/;
   variable[291] = NEW_ReduceAction287_parser___ReduceAction287___init(); /*new ReduceAction287*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[291]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[291]) /*AbstractArray::add*/;
   variable[292] = NEW_ReduceAction288_parser___ReduceAction288___init(); /*new ReduceAction288*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[292]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[292]) /*AbstractArray::add*/;
   variable[293] = NEW_ReduceAction289_parser___ReduceAction289___init(); /*new ReduceAction289*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[293]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[293]) /*AbstractArray::add*/;
   variable[294] = NEW_ReduceAction290_parser___ReduceAction290___init(); /*new ReduceAction290*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[294]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[294]) /*AbstractArray::add*/;
   variable[295] = NEW_ReduceAction291_parser___ReduceAction291___init(); /*new ReduceAction291*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[295]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[295]) /*AbstractArray::add*/;
   variable[296] = NEW_ReduceAction292_parser___ReduceAction292___init(); /*new ReduceAction292*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[296]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[296]) /*AbstractArray::add*/;
   variable[297] = NEW_ReduceAction293_parser___ReduceAction293___init(); /*new ReduceAction293*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[297]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[297]) /*AbstractArray::add*/;
   variable[298] = NEW_ReduceAction294_parser___ReduceAction294___init(); /*new ReduceAction294*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[298]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[298]) /*AbstractArray::add*/;
   variable[299] = NEW_ReduceAction295_parser___ReduceAction295___init(); /*new ReduceAction295*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[299]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[299]) /*AbstractArray::add*/;
   variable[300] = NEW_ReduceAction296_parser___ReduceAction296___init(); /*new ReduceAction296*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[300]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[300]) /*AbstractArray::add*/;
   variable[301] = NEW_ReduceAction297_parser___ReduceAction297___init(); /*new ReduceAction297*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[301]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[301]) /*AbstractArray::add*/;
   variable[302] = NEW_ReduceAction298_parser___ReduceAction298___init(); /*new ReduceAction298*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[302]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[302]) /*AbstractArray::add*/;
   variable[303] = NEW_ReduceAction299_parser___ReduceAction299___init(); /*new ReduceAction299*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[303]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[303]) /*AbstractArray::add*/;
   variable[304] = NEW_ReduceAction300_parser___ReduceAction300___init(); /*new ReduceAction300*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[304]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[304]) /*AbstractArray::add*/;
   variable[305] = NEW_ReduceAction301_parser___ReduceAction301___init(); /*new ReduceAction301*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[305]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[305]) /*AbstractArray::add*/;
   variable[306] = NEW_ReduceAction302_parser___ReduceAction302___init(); /*new ReduceAction302*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[306]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[306]) /*AbstractArray::add*/;
   variable[307] = NEW_ReduceAction303_parser___ReduceAction303___init(); /*new ReduceAction303*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[307]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[307]) /*AbstractArray::add*/;
   variable[308] = NEW_ReduceAction304_parser___ReduceAction304___init(); /*new ReduceAction304*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[308]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[308]) /*AbstractArray::add*/;
   variable[309] = NEW_ReduceAction305_parser___ReduceAction305___init(); /*new ReduceAction305*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[309]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[309]) /*AbstractArray::add*/;
   variable[310] = NEW_ReduceAction306_parser___ReduceAction306___init(); /*new ReduceAction306*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[310]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[310]) /*AbstractArray::add*/;
   variable[311] = NEW_ReduceAction307_parser___ReduceAction307___init(); /*new ReduceAction307*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[311]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[311]) /*AbstractArray::add*/;
   variable[312] = NEW_ReduceAction308_parser___ReduceAction308___init(); /*new ReduceAction308*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[312]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[312]) /*AbstractArray::add*/;
   variable[313] = NEW_ReduceAction309_parser___ReduceAction309___init(); /*new ReduceAction309*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[313]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[313]) /*AbstractArray::add*/;
   variable[314] = NEW_ReduceAction310_parser___ReduceAction310___init(); /*new ReduceAction310*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[314]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[314]) /*AbstractArray::add*/;
   variable[315] = NEW_ReduceAction311_parser___ReduceAction311___init(); /*new ReduceAction311*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[315]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[315]) /*AbstractArray::add*/;
   variable[316] = NEW_ReduceAction312_parser___ReduceAction312___init(); /*new ReduceAction312*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[316]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[316]) /*AbstractArray::add*/;
   variable[317] = NEW_ReduceAction313_parser___ReduceAction313___init(); /*new ReduceAction313*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[317]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[317]) /*AbstractArray::add*/;
   variable[318] = NEW_ReduceAction314_parser___ReduceAction314___init(); /*new ReduceAction314*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[318]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[318]) /*AbstractArray::add*/;
   variable[319] = NEW_ReduceAction315_parser___ReduceAction315___init(); /*new ReduceAction315*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[319]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[319]) /*AbstractArray::add*/;
   variable[320] = NEW_ReduceAction316_parser___ReduceAction316___init(); /*new ReduceAction316*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[320]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[320]) /*AbstractArray::add*/;
   variable[321] = NEW_ReduceAction317_parser___ReduceAction317___init(); /*new ReduceAction317*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[321]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[321]) /*AbstractArray::add*/;
   variable[322] = NEW_ReduceAction318_parser___ReduceAction318___init(); /*new ReduceAction318*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[322]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[322]) /*AbstractArray::add*/;
   variable[323] = NEW_ReduceAction319_parser___ReduceAction319___init(); /*new ReduceAction319*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[323]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[323]) /*AbstractArray::add*/;
   variable[324] = NEW_ReduceAction320_parser___ReduceAction320___init(); /*new ReduceAction320*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[324]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[324]) /*AbstractArray::add*/;
   variable[325] = NEW_ReduceAction321_parser___ReduceAction321___init(); /*new ReduceAction321*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[325]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[325]) /*AbstractArray::add*/;
   variable[326] = NEW_ReduceAction322_parser___ReduceAction322___init(); /*new ReduceAction322*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[326]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[326]) /*AbstractArray::add*/;
   variable[327] = NEW_ReduceAction323_parser___ReduceAction323___init(); /*new ReduceAction323*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[327]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[327]) /*AbstractArray::add*/;
   variable[328] = NEW_ReduceAction324_parser___ReduceAction324___init(); /*new ReduceAction324*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[328]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[328]) /*AbstractArray::add*/;
   variable[329] = NEW_ReduceAction325_parser___ReduceAction325___init(); /*new ReduceAction325*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[329]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[329]) /*AbstractArray::add*/;
   variable[330] = NEW_ReduceAction326_parser___ReduceAction326___init(); /*new ReduceAction326*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[330]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[330]) /*AbstractArray::add*/;
   variable[331] = NEW_ReduceAction327_parser___ReduceAction327___init(); /*new ReduceAction327*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[331]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[331]) /*AbstractArray::add*/;
   variable[332] = NEW_ReduceAction328_parser___ReduceAction328___init(); /*new ReduceAction328*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[332]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[332]) /*AbstractArray::add*/;
   variable[333] = NEW_ReduceAction329_parser___ReduceAction329___init(); /*new ReduceAction329*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[333]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[333]) /*AbstractArray::add*/;
   variable[334] = NEW_ReduceAction330_parser___ReduceAction330___init(); /*new ReduceAction330*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[334]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[334]) /*AbstractArray::add*/;
   variable[335] = NEW_ReduceAction331_parser___ReduceAction331___init(); /*new ReduceAction331*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[335]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[335]) /*AbstractArray::add*/;
   variable[336] = NEW_ReduceAction332_parser___ReduceAction332___init(); /*new ReduceAction332*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[336]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[336]) /*AbstractArray::add*/;
   variable[337] = NEW_ReduceAction333_parser___ReduceAction333___init(); /*new ReduceAction333*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[337]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[337]) /*AbstractArray::add*/;
   variable[338] = NEW_ReduceAction334_parser___ReduceAction334___init(); /*new ReduceAction334*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[338]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[338]) /*AbstractArray::add*/;
   variable[339] = NEW_ReduceAction335_parser___ReduceAction335___init(); /*new ReduceAction335*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[339]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[339]) /*AbstractArray::add*/;
   variable[340] = NEW_ReduceAction336_parser___ReduceAction336___init(); /*new ReduceAction336*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[340]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[340]) /*AbstractArray::add*/;
   variable[341] = NEW_ReduceAction337_parser___ReduceAction337___init(); /*new ReduceAction337*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[341]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[341]) /*AbstractArray::add*/;
   variable[342] = NEW_ReduceAction338_parser___ReduceAction338___init(); /*new ReduceAction338*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[342]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[342]) /*AbstractArray::add*/;
   variable[343] = NEW_ReduceAction339_parser___ReduceAction339___init(); /*new ReduceAction339*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[343]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[343]) /*AbstractArray::add*/;
   variable[344] = NEW_ReduceAction340_parser___ReduceAction340___init(); /*new ReduceAction340*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[344]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[344]) /*AbstractArray::add*/;
   variable[345] = NEW_ReduceAction341_parser___ReduceAction341___init(); /*new ReduceAction341*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[345]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[345]) /*AbstractArray::add*/;
   variable[346] = NEW_ReduceAction342_parser___ReduceAction342___init(); /*new ReduceAction342*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[346]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[346]) /*AbstractArray::add*/;
   variable[347] = NEW_ReduceAction343_parser___ReduceAction343___init(); /*new ReduceAction343*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[347]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[347]) /*AbstractArray::add*/;
   variable[348] = NEW_ReduceAction344_parser___ReduceAction344___init(); /*new ReduceAction344*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[348]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[348]) /*AbstractArray::add*/;
   variable[349] = NEW_ReduceAction345_parser___ReduceAction345___init(); /*new ReduceAction345*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[349]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[349]) /*AbstractArray::add*/;
   variable[350] = NEW_ReduceAction346_parser___ReduceAction346___init(); /*new ReduceAction346*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[350]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[350]) /*AbstractArray::add*/;
   variable[351] = NEW_ReduceAction347_parser___ReduceAction347___init(); /*new ReduceAction347*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[351]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[351]) /*AbstractArray::add*/;
   variable[352] = NEW_ReduceAction348_parser___ReduceAction348___init(); /*new ReduceAction348*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[352]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[352]) /*AbstractArray::add*/;
   variable[353] = NEW_ReduceAction349_parser___ReduceAction349___init(); /*new ReduceAction349*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[353]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[353]) /*AbstractArray::add*/;
   variable[354] = NEW_ReduceAction350_parser___ReduceAction350___init(); /*new ReduceAction350*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[354]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[354]) /*AbstractArray::add*/;
   variable[355] = NEW_ReduceAction351_parser___ReduceAction351___init(); /*new ReduceAction351*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[355]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[355]) /*AbstractArray::add*/;
   variable[356] = NEW_ReduceAction352_parser___ReduceAction352___init(); /*new ReduceAction352*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[356]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[356]) /*AbstractArray::add*/;
   variable[357] = NEW_ReduceAction353_parser___ReduceAction353___init(); /*new ReduceAction353*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[357]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[357]) /*AbstractArray::add*/;
   variable[358] = NEW_ReduceAction354_parser___ReduceAction354___init(); /*new ReduceAction354*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[358]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[358]) /*AbstractArray::add*/;
   variable[359] = NEW_ReduceAction355_parser___ReduceAction355___init(); /*new ReduceAction355*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[359]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[359]) /*AbstractArray::add*/;
   variable[360] = NEW_ReduceAction356_parser___ReduceAction356___init(); /*new ReduceAction356*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[360]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[360]) /*AbstractArray::add*/;
   variable[361] = NEW_ReduceAction357_parser___ReduceAction357___init(); /*new ReduceAction357*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[361]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[361]) /*AbstractArray::add*/;
   variable[362] = NEW_ReduceAction358_parser___ReduceAction358___init(); /*new ReduceAction358*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[362]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[362]) /*AbstractArray::add*/;
   variable[363] = NEW_ReduceAction359_parser___ReduceAction359___init(); /*new ReduceAction359*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[363]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[363]) /*AbstractArray::add*/;
   variable[364] = NEW_ReduceAction360_parser___ReduceAction360___init(); /*new ReduceAction360*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[364]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[364]) /*AbstractArray::add*/;
   variable[365] = NEW_ReduceAction361_parser___ReduceAction361___init(); /*new ReduceAction361*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[365]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[365]) /*AbstractArray::add*/;
   variable[366] = NEW_ReduceAction362_parser___ReduceAction362___init(); /*new ReduceAction362*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[366]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[366]) /*AbstractArray::add*/;
   variable[367] = NEW_ReduceAction363_parser___ReduceAction363___init(); /*new ReduceAction363*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[367]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[367]) /*AbstractArray::add*/;
   variable[368] = NEW_ReduceAction364_parser___ReduceAction364___init(); /*new ReduceAction364*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[368]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[368]) /*AbstractArray::add*/;
   variable[369] = NEW_ReduceAction365_parser___ReduceAction365___init(); /*new ReduceAction365*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[369]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[369]) /*AbstractArray::add*/;
   variable[370] = NEW_ReduceAction366_parser___ReduceAction366___init(); /*new ReduceAction366*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[370]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[370]) /*AbstractArray::add*/;
   variable[371] = NEW_ReduceAction367_parser___ReduceAction367___init(); /*new ReduceAction367*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[371]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[371]) /*AbstractArray::add*/;
   variable[372] = NEW_ReduceAction368_parser___ReduceAction368___init(); /*new ReduceAction368*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[372]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[372]) /*AbstractArray::add*/;
   variable[373] = NEW_ReduceAction369_parser___ReduceAction369___init(); /*new ReduceAction369*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[373]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[373]) /*AbstractArray::add*/;
   variable[374] = NEW_ReduceAction370_parser___ReduceAction370___init(); /*new ReduceAction370*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[374]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[374]) /*AbstractArray::add*/;
   variable[375] = NEW_ReduceAction371_parser___ReduceAction371___init(); /*new ReduceAction371*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[375]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[375]) /*AbstractArray::add*/;
   variable[376] = NEW_ReduceAction372_parser___ReduceAction372___init(); /*new ReduceAction372*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[376]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[376]) /*AbstractArray::add*/;
   variable[377] = NEW_ReduceAction373_parser___ReduceAction373___init(); /*new ReduceAction373*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[377]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[377]) /*AbstractArray::add*/;
   variable[378] = NEW_ReduceAction374_parser___ReduceAction374___init(); /*new ReduceAction374*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[378]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[378]) /*AbstractArray::add*/;
   variable[379] = NEW_ReduceAction375_parser___ReduceAction375___init(); /*new ReduceAction375*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[379]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[379]) /*AbstractArray::add*/;
   variable[380] = NEW_ReduceAction376_parser___ReduceAction376___init(); /*new ReduceAction376*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[380]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[380]) /*AbstractArray::add*/;
   variable[381] = NEW_ReduceAction377_parser___ReduceAction377___init(); /*new ReduceAction377*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[381]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[381]) /*AbstractArray::add*/;
   variable[382] = NEW_ReduceAction378_parser___ReduceAction378___init(); /*new ReduceAction378*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[382]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[382]) /*AbstractArray::add*/;
   variable[383] = NEW_ReduceAction379_parser___ReduceAction379___init(); /*new ReduceAction379*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[383]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[383]) /*AbstractArray::add*/;
   variable[384] = NEW_ReduceAction380_parser___ReduceAction380___init(); /*new ReduceAction380*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[384]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[384]) /*AbstractArray::add*/;
   variable[385] = NEW_ReduceAction381_parser___ReduceAction381___init(); /*new ReduceAction381*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[385]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[385]) /*AbstractArray::add*/;
   variable[386] = NEW_ReduceAction382_parser___ReduceAction382___init(); /*new ReduceAction382*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[386]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[386]) /*AbstractArray::add*/;
   variable[387] = NEW_ReduceAction383_parser___ReduceAction383___init(); /*new ReduceAction383*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[387]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[387]) /*AbstractArray::add*/;
   variable[388] = NEW_ReduceAction384_parser___ReduceAction384___init(); /*new ReduceAction384*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[388]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[388]) /*AbstractArray::add*/;
   variable[389] = NEW_ReduceAction385_parser___ReduceAction385___init(); /*new ReduceAction385*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[389]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[389]) /*AbstractArray::add*/;
   variable[390] = NEW_ReduceAction386_parser___ReduceAction386___init(); /*new ReduceAction386*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[390]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[390]) /*AbstractArray::add*/;
   variable[391] = NEW_ReduceAction387_parser___ReduceAction387___init(); /*new ReduceAction387*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[391]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[391]) /*AbstractArray::add*/;
   variable[392] = NEW_ReduceAction388_parser___ReduceAction388___init(); /*new ReduceAction388*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[392]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[392]) /*AbstractArray::add*/;
   variable[393] = NEW_ReduceAction389_parser___ReduceAction389___init(); /*new ReduceAction389*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[393]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[393]) /*AbstractArray::add*/;
   variable[394] = NEW_ReduceAction390_parser___ReduceAction390___init(); /*new ReduceAction390*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[394]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[394]) /*AbstractArray::add*/;
   variable[395] = NEW_ReduceAction391_parser___ReduceAction391___init(); /*new ReduceAction391*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[395]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[395]) /*AbstractArray::add*/;
   variable[396] = NEW_ReduceAction392_parser___ReduceAction392___init(); /*new ReduceAction392*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[396]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[396]) /*AbstractArray::add*/;
   variable[397] = NEW_ReduceAction393_parser___ReduceAction393___init(); /*new ReduceAction393*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[397]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[397]) /*AbstractArray::add*/;
   variable[398] = NEW_ReduceAction394_parser___ReduceAction394___init(); /*new ReduceAction394*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[398]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[398]) /*AbstractArray::add*/;
   variable[399] = NEW_ReduceAction395_parser___ReduceAction395___init(); /*new ReduceAction395*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[399]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[399]) /*AbstractArray::add*/;
   variable[400] = NEW_ReduceAction396_parser___ReduceAction396___init(); /*new ReduceAction396*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[400]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[400]) /*AbstractArray::add*/;
   variable[401] = NEW_ReduceAction397_parser___ReduceAction397___init(); /*new ReduceAction397*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[401]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[401]) /*AbstractArray::add*/;
   variable[402] = NEW_ReduceAction398_parser___ReduceAction398___init(); /*new ReduceAction398*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[402]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[402]) /*AbstractArray::add*/;
   variable[403] = NEW_ReduceAction399_parser___ReduceAction399___init(); /*new ReduceAction399*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[403]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[403]) /*AbstractArray::add*/;
   variable[404] = NEW_ReduceAction400_parser___ReduceAction400___init(); /*new ReduceAction400*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[404]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[404]) /*AbstractArray::add*/;
   variable[405] = NEW_ReduceAction401_parser___ReduceAction401___init(); /*new ReduceAction401*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[405]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[405]) /*AbstractArray::add*/;
   variable[406] = NEW_ReduceAction402_parser___ReduceAction402___init(); /*new ReduceAction402*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[406]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[406]) /*AbstractArray::add*/;
   variable[407] = NEW_ReduceAction403_parser___ReduceAction403___init(); /*new ReduceAction403*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[407]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[407]) /*AbstractArray::add*/;
   variable[408] = NEW_ReduceAction404_parser___ReduceAction404___init(); /*new ReduceAction404*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[408]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[408]) /*AbstractArray::add*/;
   variable[409] = NEW_ReduceAction405_parser___ReduceAction405___init(); /*new ReduceAction405*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[409]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[409]) /*AbstractArray::add*/;
   variable[410] = NEW_ReduceAction406_parser___ReduceAction406___init(); /*new ReduceAction406*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[410]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[410]) /*AbstractArray::add*/;
   variable[411] = NEW_ReduceAction407_parser___ReduceAction407___init(); /*new ReduceAction407*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[411]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[411]) /*AbstractArray::add*/;
   variable[412] = NEW_ReduceAction408_parser___ReduceAction408___init(); /*new ReduceAction408*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[412]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[412]) /*AbstractArray::add*/;
   variable[413] = NEW_ReduceAction409_parser___ReduceAction409___init(); /*new ReduceAction409*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[413]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[413]) /*AbstractArray::add*/;
   variable[414] = NEW_ReduceAction410_parser___ReduceAction410___init(); /*new ReduceAction410*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[414]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[414]) /*AbstractArray::add*/;
   variable[415] = NEW_ReduceAction411_parser___ReduceAction411___init(); /*new ReduceAction411*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[415]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[415]) /*AbstractArray::add*/;
   variable[416] = NEW_ReduceAction412_parser___ReduceAction412___init(); /*new ReduceAction412*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[416]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[416]) /*AbstractArray::add*/;
   variable[417] = NEW_ReduceAction413_parser___ReduceAction413___init(); /*new ReduceAction413*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[417]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[417]) /*AbstractArray::add*/;
   variable[418] = NEW_ReduceAction414_parser___ReduceAction414___init(); /*new ReduceAction414*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[418]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[418]) /*AbstractArray::add*/;
   variable[419] = NEW_ReduceAction415_parser___ReduceAction415___init(); /*new ReduceAction415*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[419]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[419]) /*AbstractArray::add*/;
   variable[420] = NEW_ReduceAction416_parser___ReduceAction416___init(); /*new ReduceAction416*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[420]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[420]) /*AbstractArray::add*/;
   variable[421] = NEW_ReduceAction417_parser___ReduceAction417___init(); /*new ReduceAction417*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[421]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[421]) /*AbstractArray::add*/;
   variable[422] = NEW_ReduceAction418_parser___ReduceAction418___init(); /*new ReduceAction418*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[422]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[422]) /*AbstractArray::add*/;
   variable[423] = NEW_ReduceAction419_parser___ReduceAction419___init(); /*new ReduceAction419*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[423]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[423]) /*AbstractArray::add*/;
   variable[424] = NEW_ReduceAction420_parser___ReduceAction420___init(); /*new ReduceAction420*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[424]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[424]) /*AbstractArray::add*/;
   variable[425] = NEW_ReduceAction421_parser___ReduceAction421___init(); /*new ReduceAction421*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[425]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[425]) /*AbstractArray::add*/;
   variable[426] = NEW_ReduceAction422_parser___ReduceAction422___init(); /*new ReduceAction422*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[426]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[426]) /*AbstractArray::add*/;
   variable[427] = NEW_ReduceAction423_parser___ReduceAction423___init(); /*new ReduceAction423*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[427]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[427]) /*AbstractArray::add*/;
   variable[428] = NEW_ReduceAction424_parser___ReduceAction424___init(); /*new ReduceAction424*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[428]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[428]) /*AbstractArray::add*/;
   variable[429] = NEW_ReduceAction425_parser___ReduceAction425___init(); /*new ReduceAction425*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[429]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[429]) /*AbstractArray::add*/;
   variable[430] = NEW_ReduceAction426_parser___ReduceAction426___init(); /*new ReduceAction426*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[430]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[430]) /*AbstractArray::add*/;
   variable[431] = NEW_ReduceAction427_parser___ReduceAction427___init(); /*new ReduceAction427*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[431]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[431]) /*AbstractArray::add*/;
   variable[432] = NEW_ReduceAction428_parser___ReduceAction428___init(); /*new ReduceAction428*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[432]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[432]) /*AbstractArray::add*/;
   variable[433] = NEW_ReduceAction429_parser___ReduceAction429___init(); /*new ReduceAction429*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[433]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[433]) /*AbstractArray::add*/;
   variable[434] = NEW_ReduceAction430_parser___ReduceAction430___init(); /*new ReduceAction430*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[434]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[434]) /*AbstractArray::add*/;
   variable[435] = NEW_ReduceAction431_parser___ReduceAction431___init(); /*new ReduceAction431*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[435]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[435]) /*AbstractArray::add*/;
   variable[436] = NEW_ReduceAction432_parser___ReduceAction432___init(); /*new ReduceAction432*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[436]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[436]) /*AbstractArray::add*/;
   variable[437] = NEW_ReduceAction433_parser___ReduceAction433___init(); /*new ReduceAction433*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[437]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[437]) /*AbstractArray::add*/;
   variable[438] = NEW_ReduceAction434_parser___ReduceAction434___init(); /*new ReduceAction434*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[438]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[438]) /*AbstractArray::add*/;
   variable[439] = NEW_ReduceAction435_parser___ReduceAction435___init(); /*new ReduceAction435*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[439]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[439]) /*AbstractArray::add*/;
   variable[440] = NEW_ReduceAction436_parser___ReduceAction436___init(); /*new ReduceAction436*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[440]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[440]) /*AbstractArray::add*/;
   variable[441] = NEW_ReduceAction437_parser___ReduceAction437___init(); /*new ReduceAction437*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[441]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[441]) /*AbstractArray::add*/;
   variable[442] = NEW_ReduceAction438_parser___ReduceAction438___init(); /*new ReduceAction438*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[442]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[442]) /*AbstractArray::add*/;
   variable[443] = NEW_ReduceAction439_parser___ReduceAction439___init(); /*new ReduceAction439*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[443]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[443]) /*AbstractArray::add*/;
   variable[444] = NEW_ReduceAction440_parser___ReduceAction440___init(); /*new ReduceAction440*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[444]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[444]) /*AbstractArray::add*/;
   variable[445] = NEW_ReduceAction441_parser___ReduceAction441___init(); /*new ReduceAction441*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[445]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[445]) /*AbstractArray::add*/;
   variable[446] = NEW_ReduceAction442_parser___ReduceAction442___init(); /*new ReduceAction442*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[446]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[446]) /*AbstractArray::add*/;
   variable[447] = NEW_ReduceAction443_parser___ReduceAction443___init(); /*new ReduceAction443*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[447]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[447]) /*AbstractArray::add*/;
   variable[448] = NEW_ReduceAction444_parser___ReduceAction444___init(); /*new ReduceAction444*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[448]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[448]) /*AbstractArray::add*/;
   variable[449] = NEW_ReduceAction445_parser___ReduceAction445___init(); /*new ReduceAction445*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[449]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[449]) /*AbstractArray::add*/;
   variable[450] = NEW_ReduceAction446_parser___ReduceAction446___init(); /*new ReduceAction446*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[450]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[450]) /*AbstractArray::add*/;
   variable[451] = NEW_ReduceAction447_parser___ReduceAction447___init(); /*new ReduceAction447*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[451]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[451]) /*AbstractArray::add*/;
   variable[452] = NEW_ReduceAction448_parser___ReduceAction448___init(); /*new ReduceAction448*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[452]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[452]) /*AbstractArray::add*/;
   variable[453] = NEW_ReduceAction449_parser___ReduceAction449___init(); /*new ReduceAction449*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[453]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[453]) /*AbstractArray::add*/;
   variable[454] = NEW_ReduceAction450_parser___ReduceAction450___init(); /*new ReduceAction450*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[454]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[454]) /*AbstractArray::add*/;
   variable[455] = NEW_ReduceAction451_parser___ReduceAction451___init(); /*new ReduceAction451*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[455]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[455]) /*AbstractArray::add*/;
   variable[456] = NEW_ReduceAction452_parser___ReduceAction452___init(); /*new ReduceAction452*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[456]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[456]) /*AbstractArray::add*/;
   variable[457] = NEW_ReduceAction453_parser___ReduceAction453___init(); /*new ReduceAction453*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[457]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[457]) /*AbstractArray::add*/;
   variable[458] = NEW_ReduceAction454_parser___ReduceAction454___init(); /*new ReduceAction454*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[458]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[458]) /*AbstractArray::add*/;
   variable[459] = NEW_ReduceAction455_parser___ReduceAction455___init(); /*new ReduceAction455*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[459]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[459]) /*AbstractArray::add*/;
   variable[460] = NEW_ReduceAction456_parser___ReduceAction456___init(); /*new ReduceAction456*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[460]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[460]) /*AbstractArray::add*/;
   variable[461] = NEW_ReduceAction457_parser___ReduceAction457___init(); /*new ReduceAction457*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[461]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[461]) /*AbstractArray::add*/;
   variable[462] = NEW_ReduceAction458_parser___ReduceAction458___init(); /*new ReduceAction458*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[462]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[462]) /*AbstractArray::add*/;
   variable[463] = NEW_ReduceAction459_parser___ReduceAction459___init(); /*new ReduceAction459*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[463]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[463]) /*AbstractArray::add*/;
   variable[464] = NEW_ReduceAction460_parser___ReduceAction460___init(); /*new ReduceAction460*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[464]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[464]) /*AbstractArray::add*/;
   variable[465] = NEW_ReduceAction461_parser___ReduceAction461___init(); /*new ReduceAction461*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[465]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[465]) /*AbstractArray::add*/;
   variable[466] = NEW_ReduceAction462_parser___ReduceAction462___init(); /*new ReduceAction462*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[466]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[466]) /*AbstractArray::add*/;
   variable[467] = NEW_ReduceAction463_parser___ReduceAction463___init(); /*new ReduceAction463*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[467]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[467]) /*AbstractArray::add*/;
   variable[468] = NEW_ReduceAction464_parser___ReduceAction464___init(); /*new ReduceAction464*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[468]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[468]) /*AbstractArray::add*/;
   variable[469] = NEW_ReduceAction465_parser___ReduceAction465___init(); /*new ReduceAction465*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[469]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[469]) /*AbstractArray::add*/;
   variable[470] = NEW_ReduceAction466_parser___ReduceAction466___init(); /*new ReduceAction466*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[470]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[470]) /*AbstractArray::add*/;
   variable[471] = NEW_ReduceAction467_parser___ReduceAction467___init(); /*new ReduceAction467*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[471]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[471]) /*AbstractArray::add*/;
   variable[472] = NEW_ReduceAction468_parser___ReduceAction468___init(); /*new ReduceAction468*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[472]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[472]) /*AbstractArray::add*/;
   variable[473] = NEW_ReduceAction469_parser___ReduceAction469___init(); /*new ReduceAction469*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[473]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[473]) /*AbstractArray::add*/;
   variable[474] = NEW_ReduceAction470_parser___ReduceAction470___init(); /*new ReduceAction470*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[474]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[474]) /*AbstractArray::add*/;
   variable[475] = NEW_ReduceAction471_parser___ReduceAction471___init(); /*new ReduceAction471*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[475]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[475]) /*AbstractArray::add*/;
   variable[476] = NEW_ReduceAction472_parser___ReduceAction472___init(); /*new ReduceAction472*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[476]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[476]) /*AbstractArray::add*/;
   variable[477] = NEW_ReduceAction473_parser___ReduceAction473___init(); /*new ReduceAction473*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[477]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[477]) /*AbstractArray::add*/;
   variable[478] = NEW_ReduceAction474_parser___ReduceAction474___init(); /*new ReduceAction474*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[478]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[478]) /*AbstractArray::add*/;
   variable[479] = NEW_ReduceAction475_parser___ReduceAction475___init(); /*new ReduceAction475*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[479]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[479]) /*AbstractArray::add*/;
   variable[480] = NEW_ReduceAction476_parser___ReduceAction476___init(); /*new ReduceAction476*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[480]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[480]) /*AbstractArray::add*/;
   variable[481] = NEW_ReduceAction477_parser___ReduceAction477___init(); /*new ReduceAction477*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[481]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[481]) /*AbstractArray::add*/;
   variable[482] = NEW_ReduceAction478_parser___ReduceAction478___init(); /*new ReduceAction478*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[482]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[482]) /*AbstractArray::add*/;
   variable[483] = NEW_ReduceAction479_parser___ReduceAction479___init(); /*new ReduceAction479*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[483]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[483]) /*AbstractArray::add*/;
   variable[484] = NEW_ReduceAction480_parser___ReduceAction480___init(); /*new ReduceAction480*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[484]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[484]) /*AbstractArray::add*/;
   variable[485] = NEW_ReduceAction481_parser___ReduceAction481___init(); /*new ReduceAction481*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[485]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[485]) /*AbstractArray::add*/;
   variable[486] = NEW_ReduceAction482_parser___ReduceAction482___init(); /*new ReduceAction482*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[486]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[486]) /*AbstractArray::add*/;
   variable[487] = NEW_ReduceAction483_parser___ReduceAction483___init(); /*new ReduceAction483*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[487]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[487]) /*AbstractArray::add*/;
   variable[488] = NEW_ReduceAction484_parser___ReduceAction484___init(); /*new ReduceAction484*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[488]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[488]) /*AbstractArray::add*/;
   variable[489] = NEW_ReduceAction485_parser___ReduceAction485___init(); /*new ReduceAction485*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[489]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[489]) /*AbstractArray::add*/;
   variable[490] = NEW_ReduceAction486_parser___ReduceAction486___init(); /*new ReduceAction486*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[490]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[490]) /*AbstractArray::add*/;
   variable[491] = NEW_ReduceAction487_parser___ReduceAction487___init(); /*new ReduceAction487*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[491]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[491]) /*AbstractArray::add*/;
   variable[492] = NEW_ReduceAction488_parser___ReduceAction488___init(); /*new ReduceAction488*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[492]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[492]) /*AbstractArray::add*/;
   variable[493] = NEW_ReduceAction489_parser___ReduceAction489___init(); /*new ReduceAction489*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[493]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[493]) /*AbstractArray::add*/;
   variable[494] = NEW_ReduceAction490_parser___ReduceAction490___init(); /*new ReduceAction490*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[494]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[494]) /*AbstractArray::add*/;
   variable[495] = NEW_ReduceAction491_parser___ReduceAction491___init(); /*new ReduceAction491*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[495]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[495]) /*AbstractArray::add*/;
   variable[496] = NEW_ReduceAction492_parser___ReduceAction492___init(); /*new ReduceAction492*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[496]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[496]) /*AbstractArray::add*/;
   variable[497] = NEW_ReduceAction493_parser___ReduceAction493___init(); /*new ReduceAction493*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[497]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[497]) /*AbstractArray::add*/;
   variable[498] = NEW_ReduceAction494_parser___ReduceAction494___init(); /*new ReduceAction494*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[498]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[498]) /*AbstractArray::add*/;
   variable[499] = NEW_ReduceAction495_parser___ReduceAction495___init(); /*new ReduceAction495*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[499]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[499]) /*AbstractArray::add*/;
   variable[500] = NEW_ReduceAction496_parser___ReduceAction496___init(); /*new ReduceAction496*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[500]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[500]) /*AbstractArray::add*/;
   variable[501] = NEW_ReduceAction497_parser___ReduceAction497___init(); /*new ReduceAction497*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[501]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[501]) /*AbstractArray::add*/;
   variable[502] = NEW_ReduceAction498_parser___ReduceAction498___init(); /*new ReduceAction498*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[502]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[502]) /*AbstractArray::add*/;
   variable[503] = NEW_ReduceAction499_parser___ReduceAction499___init(); /*new ReduceAction499*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[503]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[503]) /*AbstractArray::add*/;
   variable[504] = NEW_ReduceAction500_parser___ReduceAction500___init(); /*new ReduceAction500*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[504]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[504]) /*AbstractArray::add*/;
   variable[505] = NEW_ReduceAction501_parser___ReduceAction501___init(); /*new ReduceAction501*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[505]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[505]) /*AbstractArray::add*/;
   variable[506] = NEW_ReduceAction502_parser___ReduceAction502___init(); /*new ReduceAction502*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[506]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[506]) /*AbstractArray::add*/;
   variable[507] = NEW_ReduceAction503_parser___ReduceAction503___init(); /*new ReduceAction503*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[507]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[507]) /*AbstractArray::add*/;
   variable[508] = NEW_ReduceAction504_parser___ReduceAction504___init(); /*new ReduceAction504*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[508]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[508]) /*AbstractArray::add*/;
   variable[509] = NEW_ReduceAction505_parser___ReduceAction505___init(); /*new ReduceAction505*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[509]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[509]) /*AbstractArray::add*/;
   variable[510] = NEW_ReduceAction506_parser___ReduceAction506___init(); /*new ReduceAction506*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[510]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[510]) /*AbstractArray::add*/;
   variable[511] = NEW_ReduceAction507_parser___ReduceAction507___init(); /*new ReduceAction507*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[511]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[511]) /*AbstractArray::add*/;
   variable[512] = NEW_ReduceAction508_parser___ReduceAction508___init(); /*new ReduceAction508*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[512]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[512]) /*AbstractArray::add*/;
   variable[513] = NEW_ReduceAction509_parser___ReduceAction509___init(); /*new ReduceAction509*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[513]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[513]) /*AbstractArray::add*/;
   variable[514] = NEW_ReduceAction510_parser___ReduceAction510___init(); /*new ReduceAction510*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[514]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[514]) /*AbstractArray::add*/;
   variable[515] = NEW_ReduceAction511_parser___ReduceAction511___init(); /*new ReduceAction511*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[515]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[515]) /*AbstractArray::add*/;
   variable[516] = NEW_ReduceAction512_parser___ReduceAction512___init(); /*new ReduceAction512*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[516]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[516]) /*AbstractArray::add*/;
   variable[517] = NEW_ReduceAction513_parser___ReduceAction513___init(); /*new ReduceAction513*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[517]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[517]) /*AbstractArray::add*/;
   variable[518] = NEW_ReduceAction514_parser___ReduceAction514___init(); /*new ReduceAction514*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[518]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[518]) /*AbstractArray::add*/;
   variable[519] = NEW_ReduceAction515_parser___ReduceAction515___init(); /*new ReduceAction515*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[519]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[519]) /*AbstractArray::add*/;
   variable[520] = NEW_ReduceAction516_parser___ReduceAction516___init(); /*new ReduceAction516*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[520]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[520]) /*AbstractArray::add*/;
   variable[521] = NEW_ReduceAction517_parser___ReduceAction517___init(); /*new ReduceAction517*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[521]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[521]) /*AbstractArray::add*/;
   variable[522] = NEW_ReduceAction518_parser___ReduceAction518___init(); /*new ReduceAction518*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[522]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[522]) /*AbstractArray::add*/;
   variable[523] = NEW_ReduceAction519_parser___ReduceAction519___init(); /*new ReduceAction519*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[523]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[523]) /*AbstractArray::add*/;
   variable[524] = NEW_ReduceAction520_parser___ReduceAction520___init(); /*new ReduceAction520*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[524]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[524]) /*AbstractArray::add*/;
   variable[525] = NEW_ReduceAction521_parser___ReduceAction521___init(); /*new ReduceAction521*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[525]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[525]) /*AbstractArray::add*/;
   variable[526] = NEW_ReduceAction522_parser___ReduceAction522___init(); /*new ReduceAction522*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[526]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[526]) /*AbstractArray::add*/;
   variable[527] = NEW_ReduceAction523_parser___ReduceAction523___init(); /*new ReduceAction523*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[527]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[527]) /*AbstractArray::add*/;
   variable[528] = NEW_ReduceAction524_parser___ReduceAction524___init(); /*new ReduceAction524*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[528]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[528]) /*AbstractArray::add*/;
   variable[529] = NEW_ReduceAction525_parser___ReduceAction525___init(); /*new ReduceAction525*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[529]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[529]) /*AbstractArray::add*/;
   variable[530] = NEW_ReduceAction526_parser___ReduceAction526___init(); /*new ReduceAction526*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[530]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[530]) /*AbstractArray::add*/;
   variable[531] = NEW_ReduceAction527_parser___ReduceAction527___init(); /*new ReduceAction527*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[531]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[531]) /*AbstractArray::add*/;
   variable[532] = NEW_ReduceAction528_parser___ReduceAction528___init(); /*new ReduceAction528*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[532]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[532]) /*AbstractArray::add*/;
   variable[533] = NEW_ReduceAction529_parser___ReduceAction529___init(); /*new ReduceAction529*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[533]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[533]) /*AbstractArray::add*/;
   variable[534] = NEW_ReduceAction530_parser___ReduceAction530___init(); /*new ReduceAction530*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[534]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[534]) /*AbstractArray::add*/;
   variable[535] = NEW_ReduceAction531_parser___ReduceAction531___init(); /*new ReduceAction531*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[535]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[535]) /*AbstractArray::add*/;
   variable[536] = NEW_ReduceAction532_parser___ReduceAction532___init(); /*new ReduceAction532*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[536]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[536]) /*AbstractArray::add*/;
   variable[537] = NEW_ReduceAction533_parser___ReduceAction533___init(); /*new ReduceAction533*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[537]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[537]) /*AbstractArray::add*/;
   variable[538] = NEW_ReduceAction534_parser___ReduceAction534___init(); /*new ReduceAction534*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[538]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[538]) /*AbstractArray::add*/;
   variable[539] = NEW_ReduceAction535_parser___ReduceAction535___init(); /*new ReduceAction535*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[539]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[539]) /*AbstractArray::add*/;
   variable[540] = NEW_ReduceAction536_parser___ReduceAction536___init(); /*new ReduceAction536*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[540]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[540]) /*AbstractArray::add*/;
   variable[541] = NEW_ReduceAction537_parser___ReduceAction537___init(); /*new ReduceAction537*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[541]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[541]) /*AbstractArray::add*/;
   variable[542] = NEW_ReduceAction538_parser___ReduceAction538___init(); /*new ReduceAction538*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[542]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[542]) /*AbstractArray::add*/;
   variable[543] = NEW_ReduceAction539_parser___ReduceAction539___init(); /*new ReduceAction539*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[543]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[543]) /*AbstractArray::add*/;
   variable[544] = NEW_ReduceAction540_parser___ReduceAction540___init(); /*new ReduceAction540*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[544]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[544]) /*AbstractArray::add*/;
   variable[545] = NEW_ReduceAction541_parser___ReduceAction541___init(); /*new ReduceAction541*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[545]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[545]) /*AbstractArray::add*/;
   variable[546] = NEW_ReduceAction542_parser___ReduceAction542___init(); /*new ReduceAction542*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[546]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[546]) /*AbstractArray::add*/;
   variable[547] = NEW_ReduceAction543_parser___ReduceAction543___init(); /*new ReduceAction543*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[547]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[547]) /*AbstractArray::add*/;
   variable[548] = NEW_ReduceAction544_parser___ReduceAction544___init(); /*new ReduceAction544*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[548]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[548]) /*AbstractArray::add*/;
   variable[549] = NEW_ReduceAction545_parser___ReduceAction545___init(); /*new ReduceAction545*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[549]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[549]) /*AbstractArray::add*/;
   variable[550] = NEW_ReduceAction546_parser___ReduceAction546___init(); /*new ReduceAction546*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[550]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[550]) /*AbstractArray::add*/;
   variable[551] = NEW_ReduceAction547_parser___ReduceAction547___init(); /*new ReduceAction547*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[551]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[551]) /*AbstractArray::add*/;
   variable[552] = NEW_ReduceAction548_parser___ReduceAction548___init(); /*new ReduceAction548*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[552]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[552]) /*AbstractArray::add*/;
   variable[553] = NEW_ReduceAction549_parser___ReduceAction549___init(); /*new ReduceAction549*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[553]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[553]) /*AbstractArray::add*/;
   variable[554] = NEW_ReduceAction550_parser___ReduceAction550___init(); /*new ReduceAction550*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[554]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[554]) /*AbstractArray::add*/;
   variable[555] = NEW_ReduceAction551_parser___ReduceAction551___init(); /*new ReduceAction551*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[555]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[555]) /*AbstractArray::add*/;
   variable[556] = NEW_ReduceAction552_parser___ReduceAction552___init(); /*new ReduceAction552*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[556]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[556]) /*AbstractArray::add*/;
   variable[557] = NEW_ReduceAction553_parser___ReduceAction553___init(); /*new ReduceAction553*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[557]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[557]) /*AbstractArray::add*/;
   variable[558] = NEW_ReduceAction554_parser___ReduceAction554___init(); /*new ReduceAction554*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[558]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[558]) /*AbstractArray::add*/;
   variable[559] = NEW_ReduceAction555_parser___ReduceAction555___init(); /*new ReduceAction555*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[559]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[559]) /*AbstractArray::add*/;
   variable[560] = NEW_ReduceAction556_parser___ReduceAction556___init(); /*new ReduceAction556*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[560]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[560]) /*AbstractArray::add*/;
   variable[561] = NEW_ReduceAction557_parser___ReduceAction557___init(); /*new ReduceAction557*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[561]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[561]) /*AbstractArray::add*/;
   variable[562] = NEW_ReduceAction558_parser___ReduceAction558___init(); /*new ReduceAction558*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[562]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[562]) /*AbstractArray::add*/;
   variable[563] = NEW_ReduceAction559_parser___ReduceAction559___init(); /*new ReduceAction559*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[563]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[563]) /*AbstractArray::add*/;
   variable[564] = NEW_ReduceAction560_parser___ReduceAction560___init(); /*new ReduceAction560*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[564]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[564]) /*AbstractArray::add*/;
   variable[565] = NEW_ReduceAction561_parser___ReduceAction561___init(); /*new ReduceAction561*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[565]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[565]) /*AbstractArray::add*/;
   variable[566] = NEW_ReduceAction562_parser___ReduceAction562___init(); /*new ReduceAction562*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[566]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[566]) /*AbstractArray::add*/;
   variable[567] = NEW_ReduceAction563_parser___ReduceAction563___init(); /*new ReduceAction563*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[567]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[567]) /*AbstractArray::add*/;
   variable[568] = NEW_ReduceAction564_parser___ReduceAction564___init(); /*new ReduceAction564*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[568]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[568]) /*AbstractArray::add*/;
   variable[569] = NEW_ReduceAction565_parser___ReduceAction565___init(); /*new ReduceAction565*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[569]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[569]) /*AbstractArray::add*/;
   variable[570] = NEW_ReduceAction566_parser___ReduceAction566___init(); /*new ReduceAction566*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[570]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[570]) /*AbstractArray::add*/;
   variable[571] = NEW_ReduceAction567_parser___ReduceAction567___init(); /*new ReduceAction567*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[571]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[571]) /*AbstractArray::add*/;
   variable[572] = NEW_ReduceAction568_parser___ReduceAction568___init(); /*new ReduceAction568*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[572]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[572]) /*AbstractArray::add*/;
   variable[573] = NEW_ReduceAction569_parser___ReduceAction569___init(); /*new ReduceAction569*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[573]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[573]) /*AbstractArray::add*/;
   variable[574] = NEW_ReduceAction570_parser___ReduceAction570___init(); /*new ReduceAction570*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[574]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[574]) /*AbstractArray::add*/;
   variable[575] = NEW_ReduceAction571_parser___ReduceAction571___init(); /*new ReduceAction571*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[575]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[575]) /*AbstractArray::add*/;
   variable[576] = NEW_ReduceAction572_parser___ReduceAction572___init(); /*new ReduceAction572*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[576]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[576]) /*AbstractArray::add*/;
   variable[577] = NEW_ReduceAction573_parser___ReduceAction573___init(); /*new ReduceAction573*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[577]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[577]) /*AbstractArray::add*/;
   variable[578] = NEW_ReduceAction574_parser___ReduceAction574___init(); /*new ReduceAction574*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[578]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[578]) /*AbstractArray::add*/;
   variable[579] = NEW_ReduceAction575_parser___ReduceAction575___init(); /*new ReduceAction575*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[579]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[579]) /*AbstractArray::add*/;
   variable[580] = NEW_ReduceAction576_parser___ReduceAction576___init(); /*new ReduceAction576*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[580]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[580]) /*AbstractArray::add*/;
   variable[581] = NEW_ReduceAction577_parser___ReduceAction577___init(); /*new ReduceAction577*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[581]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[581]) /*AbstractArray::add*/;
   variable[582] = NEW_ReduceAction578_parser___ReduceAction578___init(); /*new ReduceAction578*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[582]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[582]) /*AbstractArray::add*/;
   variable[583] = NEW_ReduceAction579_parser___ReduceAction579___init(); /*new ReduceAction579*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[583]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[583]) /*AbstractArray::add*/;
   variable[584] = NEW_ReduceAction580_parser___ReduceAction580___init(); /*new ReduceAction580*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[584]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[584]) /*AbstractArray::add*/;
   variable[585] = NEW_ReduceAction581_parser___ReduceAction581___init(); /*new ReduceAction581*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[585]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[585]) /*AbstractArray::add*/;
   variable[586] = NEW_ReduceAction582_parser___ReduceAction582___init(); /*new ReduceAction582*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[586]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[586]) /*AbstractArray::add*/;
   variable[587] = NEW_ReduceAction583_parser___ReduceAction583___init(); /*new ReduceAction583*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[587]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[587]) /*AbstractArray::add*/;
   variable[588] = NEW_ReduceAction584_parser___ReduceAction584___init(); /*new ReduceAction584*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[588]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[588]) /*AbstractArray::add*/;
   variable[589] = NEW_ReduceAction585_parser___ReduceAction585___init(); /*new ReduceAction585*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[589]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[589]) /*AbstractArray::add*/;
   variable[590] = NEW_ReduceAction586_parser___ReduceAction586___init(); /*new ReduceAction586*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[590]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[590]) /*AbstractArray::add*/;
   variable[591] = NEW_ReduceAction587_parser___ReduceAction587___init(); /*new ReduceAction587*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[591]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[591]) /*AbstractArray::add*/;
   variable[592] = NEW_ReduceAction588_parser___ReduceAction588___init(); /*new ReduceAction588*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[592]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[592]) /*AbstractArray::add*/;
   variable[593] = NEW_ReduceAction589_parser___ReduceAction589___init(); /*new ReduceAction589*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[593]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[593]) /*AbstractArray::add*/;
   variable[594] = NEW_ReduceAction590_parser___ReduceAction590___init(); /*new ReduceAction590*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[594]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[594]) /*AbstractArray::add*/;
   variable[595] = NEW_ReduceAction591_parser___ReduceAction591___init(); /*new ReduceAction591*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[595]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[595]) /*AbstractArray::add*/;
   variable[596] = NEW_ReduceAction592_parser___ReduceAction592___init(); /*new ReduceAction592*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[596]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[596]) /*AbstractArray::add*/;
   variable[597] = NEW_ReduceAction593_parser___ReduceAction593___init(); /*new ReduceAction593*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[597]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[597]) /*AbstractArray::add*/;
   variable[598] = NEW_ReduceAction594_parser___ReduceAction594___init(); /*new ReduceAction594*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[598]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[598]) /*AbstractArray::add*/;
   variable[599] = NEW_ReduceAction595_parser___ReduceAction595___init(); /*new ReduceAction595*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[599]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[599]) /*AbstractArray::add*/;
   variable[600] = NEW_ReduceAction596_parser___ReduceAction596___init(); /*new ReduceAction596*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[600]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[600]) /*AbstractArray::add*/;
   variable[601] = NEW_ReduceAction597_parser___ReduceAction597___init(); /*new ReduceAction597*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[601]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[601]) /*AbstractArray::add*/;
   variable[602] = NEW_ReduceAction598_parser___ReduceAction598___init(); /*new ReduceAction598*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[602]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[602]) /*AbstractArray::add*/;
   variable[603] = NEW_ReduceAction599_parser___ReduceAction599___init(); /*new ReduceAction599*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[603]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[603]) /*AbstractArray::add*/;
   variable[604] = NEW_ReduceAction600_parser___ReduceAction600___init(); /*new ReduceAction600*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[604]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[604]) /*AbstractArray::add*/;
   variable[605] = NEW_ReduceAction601_parser___ReduceAction601___init(); /*new ReduceAction601*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[605]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[605]) /*AbstractArray::add*/;
   variable[606] = NEW_ReduceAction602_parser___ReduceAction602___init(); /*new ReduceAction602*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[606]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[606]) /*AbstractArray::add*/;
   variable[607] = NEW_ReduceAction603_parser___ReduceAction603___init(); /*new ReduceAction603*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[607]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[607]) /*AbstractArray::add*/;
   variable[608] = NEW_ReduceAction604_parser___ReduceAction604___init(); /*new ReduceAction604*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[608]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[608]) /*AbstractArray::add*/;
   variable[609] = NEW_ReduceAction605_parser___ReduceAction605___init(); /*new ReduceAction605*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[609]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[609]) /*AbstractArray::add*/;
   variable[610] = NEW_ReduceAction606_parser___ReduceAction606___init(); /*new ReduceAction606*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[610]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[610]) /*AbstractArray::add*/;
   variable[611] = NEW_ReduceAction607_parser___ReduceAction607___init(); /*new ReduceAction607*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[611]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[611]) /*AbstractArray::add*/;
   variable[612] = NEW_ReduceAction608_parser___ReduceAction608___init(); /*new ReduceAction608*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[612]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[612]) /*AbstractArray::add*/;
   variable[613] = NEW_ReduceAction609_parser___ReduceAction609___init(); /*new ReduceAction609*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[613]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[613]) /*AbstractArray::add*/;
   variable[614] = NEW_ReduceAction610_parser___ReduceAction610___init(); /*new ReduceAction610*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[614]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[614]) /*AbstractArray::add*/;
   variable[615] = NEW_ReduceAction611_parser___ReduceAction611___init(); /*new ReduceAction611*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[615]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[615]) /*AbstractArray::add*/;
   variable[616] = NEW_ReduceAction612_parser___ReduceAction612___init(); /*new ReduceAction612*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[616]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[616]) /*AbstractArray::add*/;
   variable[617] = NEW_ReduceAction613_parser___ReduceAction613___init(); /*new ReduceAction613*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[617]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[617]) /*AbstractArray::add*/;
   variable[618] = NEW_ReduceAction614_parser___ReduceAction614___init(); /*new ReduceAction614*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[618]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[618]) /*AbstractArray::add*/;
   variable[619] = NEW_ReduceAction615_parser___ReduceAction615___init(); /*new ReduceAction615*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[619]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[619]) /*AbstractArray::add*/;
   variable[620] = NEW_ReduceAction616_parser___ReduceAction616___init(); /*new ReduceAction616*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[620]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[620]) /*AbstractArray::add*/;
   variable[621] = NEW_ReduceAction617_parser___ReduceAction617___init(); /*new ReduceAction617*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[621]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[621]) /*AbstractArray::add*/;
   variable[622] = NEW_ReduceAction618_parser___ReduceAction618___init(); /*new ReduceAction618*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[622]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[622]) /*AbstractArray::add*/;
   variable[623] = NEW_ReduceAction619_parser___ReduceAction619___init(); /*new ReduceAction619*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[623]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[623]) /*AbstractArray::add*/;
   variable[624] = NEW_ReduceAction620_parser___ReduceAction620___init(); /*new ReduceAction620*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[624]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[624]) /*AbstractArray::add*/;
   variable[625] = NEW_ReduceAction621_parser___ReduceAction621___init(); /*new ReduceAction621*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[625]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[625]) /*AbstractArray::add*/;
   variable[626] = NEW_ReduceAction622_parser___ReduceAction622___init(); /*new ReduceAction622*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[626]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[626]) /*AbstractArray::add*/;
   variable[627] = NEW_ReduceAction623_parser___ReduceAction623___init(); /*new ReduceAction623*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[627]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[627]) /*AbstractArray::add*/;
   variable[628] = NEW_ReduceAction624_parser___ReduceAction624___init(); /*new ReduceAction624*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[628]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[628]) /*AbstractArray::add*/;
   variable[629] = NEW_ReduceAction625_parser___ReduceAction625___init(); /*new ReduceAction625*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[629]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[629]) /*AbstractArray::add*/;
   variable[630] = NEW_ReduceAction626_parser___ReduceAction626___init(); /*new ReduceAction626*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[630]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[630]) /*AbstractArray::add*/;
   variable[631] = NEW_ReduceAction627_parser___ReduceAction627___init(); /*new ReduceAction627*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[631]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[631]) /*AbstractArray::add*/;
   variable[632] = NEW_ReduceAction628_parser___ReduceAction628___init(); /*new ReduceAction628*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[632]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[632]) /*AbstractArray::add*/;
   variable[633] = NEW_ReduceAction629_parser___ReduceAction629___init(); /*new ReduceAction629*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[633]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[633]) /*AbstractArray::add*/;
   variable[634] = NEW_ReduceAction630_parser___ReduceAction630___init(); /*new ReduceAction630*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[634]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[634]) /*AbstractArray::add*/;
   variable[635] = NEW_ReduceAction631_parser___ReduceAction631___init(); /*new ReduceAction631*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[635]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[635]) /*AbstractArray::add*/;
   variable[636] = NEW_ReduceAction632_parser___ReduceAction632___init(); /*new ReduceAction632*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[636]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[636]) /*AbstractArray::add*/;
   variable[637] = NEW_ReduceAction633_parser___ReduceAction633___init(); /*new ReduceAction633*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[637]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[637]) /*AbstractArray::add*/;
   variable[638] = NEW_ReduceAction634_parser___ReduceAction634___init(); /*new ReduceAction634*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[638]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[638]) /*AbstractArray::add*/;
   variable[639] = NEW_ReduceAction635_parser___ReduceAction635___init(); /*new ReduceAction635*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[639]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[639]) /*AbstractArray::add*/;
   variable[640] = NEW_ReduceAction636_parser___ReduceAction636___init(); /*new ReduceAction636*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[640]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[640]) /*AbstractArray::add*/;
   variable[641] = NEW_ReduceAction637_parser___ReduceAction637___init(); /*new ReduceAction637*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[641]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[641]) /*AbstractArray::add*/;
   variable[642] = NEW_ReduceAction638_parser___ReduceAction638___init(); /*new ReduceAction638*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[642]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[642]) /*AbstractArray::add*/;
   variable[643] = NEW_ReduceAction639_parser___ReduceAction639___init(); /*new ReduceAction639*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[643]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[643]) /*AbstractArray::add*/;
   variable[644] = NEW_ReduceAction640_parser___ReduceAction640___init(); /*new ReduceAction640*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[644]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[644]) /*AbstractArray::add*/;
   variable[645] = NEW_ReduceAction641_parser___ReduceAction641___init(); /*new ReduceAction641*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[645]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[645]) /*AbstractArray::add*/;
   variable[646] = NEW_ReduceAction642_parser___ReduceAction642___init(); /*new ReduceAction642*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[646]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[646]) /*AbstractArray::add*/;
   variable[647] = NEW_ReduceAction643_parser___ReduceAction643___init(); /*new ReduceAction643*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[647]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[647]) /*AbstractArray::add*/;
   variable[648] = NEW_ReduceAction644_parser___ReduceAction644___init(); /*new ReduceAction644*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[648]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[648]) /*AbstractArray::add*/;
   variable[649] = NEW_ReduceAction645_parser___ReduceAction645___init(); /*new ReduceAction645*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[649]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[649]) /*AbstractArray::add*/;
   variable[650] = NEW_ReduceAction646_parser___ReduceAction646___init(); /*new ReduceAction646*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[650]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[650]) /*AbstractArray::add*/;
   variable[651] = NEW_ReduceAction647_parser___ReduceAction647___init(); /*new ReduceAction647*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[651]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[651]) /*AbstractArray::add*/;
   variable[652] = NEW_ReduceAction648_parser___ReduceAction648___init(); /*new ReduceAction648*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[652]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[652]) /*AbstractArray::add*/;
   variable[653] = NEW_ReduceAction649_parser___ReduceAction649___init(); /*new ReduceAction649*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[653]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[653]) /*AbstractArray::add*/;
   variable[654] = NEW_ReduceAction650_parser___ReduceAction650___init(); /*new ReduceAction650*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[654]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[654]) /*AbstractArray::add*/;
   variable[655] = NEW_ReduceAction651_parser___ReduceAction651___init(); /*new ReduceAction651*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[655]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[655]) /*AbstractArray::add*/;
   variable[656] = NEW_ReduceAction652_parser___ReduceAction652___init(); /*new ReduceAction652*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[656]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[656]) /*AbstractArray::add*/;
   variable[657] = NEW_ReduceAction653_parser___ReduceAction653___init(); /*new ReduceAction653*/
-  ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[657]) /*AbstractArray::add*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[657]) /*AbstractArray::add*/;
   variable[4] = NEW_Array_array___Array___with_items(variable[3]); /*new Array[ReduceAction]*/
   variable[3] = variable[4];
   ATTR_parser___Parser____reduce_table(variable[2]) /*Parser::_reduce_table*/ = variable[3];
@@ -2007,31 +2007,31 @@ void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
     ATTR_parser___SearchTokensVisitor____last_token(variable[3]) /*SearchTokensVisitor::_last_token*/ =  variable[1] /*n*/;
     variable[3] = variable[0];
     variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    variable[3] = ((array___AbstractArray___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*AbstractArray::iterator*/;
+    variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArray::iterator*/;
     while (true) { /*for*/
-      variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ArrayIterator::is_ok*/;
+      variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
       if (!UNTAG_Bool(variable[4])) break; /*for*/
-      variable[4] = ((array___ArrayIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ArrayIterator::item*/;
+      variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/;
       variable[5] = variable[4];
-      ((parser_prod___Prod___first_token__eq_t)CALL( variable[5] /*no*/,COLOR_parser_prod___Prod___first_token__eq))( variable[5] /*no*/,  variable[1] /*n*/) /*Prod::first_token=*/;
+      CALL_parser_prod___Prod___first_token__eq( variable[5] /*no*/)( variable[5] /*no*/,  variable[1] /*n*/) /*Prod::first_token=*/;
       continue_30: while(0);
-      ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+      CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
     }
     break_30: while(0);
     variable[3] = variable[0];
     variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___clear_t)CALL(variable[3],COLOR_abstract_collection___RemovableCollection___clear))(variable[3]) /*AbstractArray::clear*/;
+    CALL_abstract_collection___RemovableCollection___clear(variable[3])(variable[3]) /*AbstractArray::clear*/;
   } else { /*if*/
     variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Prod, ID_Prod)) /*cast Prod*/;
     if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___visit, LOCATE_parser, 835); nit_exit(1);}
     variable[3] = variable[0];
     variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[3]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3],  variable[1] /*n*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3],  variable[1] /*n*/) /*AbstractArray::add*/;
     variable[3] = variable[0];
-    ((parser_prod___PNode___visit_all_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___visit_all))( variable[1] /*n*/, variable[3]) /*PNode::visit_all*/;
+    CALL_parser_prod___PNode___visit_all( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::visit_all*/;
     variable[3] = variable[0];
     variable[3] = ATTR_parser___SearchTokensVisitor____last_token(variable[3]) /*SearchTokensVisitor::_last_token*/;
-    ((parser_prod___Prod___last_token__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___Prod___last_token__eq))( variable[1] /*n*/, variable[3]) /*Prod::last_token=*/;
+    CALL_parser_prod___Prod___last_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::last_token=*/;
   }
   return_label29: while(false);
   tracehead = trace.prev;
@@ -2090,8 +2090,8 @@ void parser___ReduceAction0___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[4] /*listnode3*/,  variable[5] /*listnode4*/); /*new AModule*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmodulenode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label32: while(false);
   tracehead = trace.prev;
   return;
@@ -2118,7 +2118,7 @@ void parser___ReduceAction1___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -2130,8 +2130,8 @@ void parser___ReduceAction1___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( variable[7] /*ppackagedeclnode2*/,  variable[5] /*listnode3*/,  variable[6] /*listnode4*/); /*new AModule*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label34: while(false);
   tracehead = trace.prev;
   return;
@@ -2158,7 +2158,7 @@ void parser___ReduceAction2___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -2167,20 +2167,20 @@ void parser___ReduceAction2___action(val_t  self, val_t  param0) {
   variable[7] =  variable[4] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction2___action, LOCATE_parser, 898); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode4*/)( variable[5] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[5] =  variable[7] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode4*/,  variable[7] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode4*/)( variable[5] /*listnode4*/,  variable[7] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode4*/,  variable[6] /*listnode5*/); /*new AModule*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label36: while(false);
   tracehead = trace.prev;
   return;
@@ -2207,9 +2207,9 @@ void parser___ReduceAction3___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -2221,20 +2221,20 @@ void parser___ReduceAction3___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction3___action, LOCATE_parser, 928); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode4*/,  variable[7] /*listnode5*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label38: while(false);
   tracehead = trace.prev;
   return;
@@ -2261,7 +2261,7 @@ void parser___ReduceAction4___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -2270,20 +2270,20 @@ void parser___ReduceAction4___action(val_t  self, val_t  param0) {
   variable[7] =  variable[4] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction4___action, LOCATE_parser, 955); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[6] =  variable[7] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode3*/,  variable[6] /*listnode5*/); /*new AModule*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label40: while(false);
   tracehead = trace.prev;
   return;
@@ -2310,9 +2310,9 @@ void parser___ReduceAction5___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -2324,20 +2324,20 @@ void parser___ReduceAction5___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction5___action, LOCATE_parser, 985); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode3*/,  variable[7] /*listnode5*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label42: while(false);
   tracehead = trace.prev;
   return;
@@ -2364,9 +2364,9 @@ void parser___ReduceAction6___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -2375,32 +2375,32 @@ void parser___ReduceAction6___action(val_t  self, val_t  param0) {
   variable[8] =  variable[5] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 1013); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 1022); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode4*/,  variable[7] /*listnode6*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label44: while(false);
   tracehead = trace.prev;
   return;
@@ -2427,11 +2427,11 @@ void parser___ReduceAction7___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -2443,32 +2443,32 @@ void parser___ReduceAction7___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 1053); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 1062); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/); /*new AModule*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label46: while(false);
   tracehead = trace.prev;
   return;
@@ -2495,9 +2495,9 @@ void parser___ReduceAction8___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -2508,21 +2508,21 @@ void parser___ReduceAction8___action(val_t  self, val_t  param0) {
   variable[9] =  variable[5] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction8___action, LOCATE_parser, 1091); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*ppropdefnode5*/)( variable[9] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[9] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[9] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[8] /*listnode6*/); /*new ATopClassdef*/
   variable[10] = variable[11];
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pclassdefnode4*/)( variable[10] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode7*/,  variable[10] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode7*/)( variable[7] /*listnode7*/,  variable[10] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[12] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode3*/,  variable[7] /*listnode7*/); /*new AModule*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pmodulenode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label48: while(false);
   tracehead = trace.prev;
   return;
@@ -2549,11 +2549,11 @@ void parser___ReduceAction9___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -2567,30 +2567,30 @@ void parser___ReduceAction9___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction9___action, LOCATE_parser, 1125); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode7*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode7*/)( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode7*/,  variable[11] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[11] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode7*/); /*new ATopClassdef*/
   variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/); /*new AModule*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label50: while(false);
   tracehead = trace.prev;
   return;
@@ -2617,11 +2617,11 @@ void parser___ReduceAction10___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -2635,21 +2635,21 @@ void parser___ReduceAction10___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction10___action, LOCATE_parser, 1166); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode6*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode6*/)( variable[10] /*listnode6*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode6*/); /*new ATopClassdef*/
   variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode7*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode3*/,  variable[8] /*listnode7*/); /*new AModule*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label52: while(false);
   tracehead = trace.prev;
   return;
@@ -2676,13 +2676,13 @@ void parser___ReduceAction11___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -2699,30 +2699,30 @@ void parser___ReduceAction11___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist4*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1203); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode6*/)( variable[13] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[11] =  variable[13] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[13] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[13] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode4*/)( variable[14] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label54: while(false);
   tracehead = trace.prev;
   return;
@@ -2749,11 +2749,11 @@ void parser___ReduceAction12___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -2762,13 +2762,13 @@ void parser___ReduceAction12___action(val_t  self, val_t  param0) {
   variable[9] =  variable[6] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1241); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -2776,21 +2776,21 @@ void parser___ReduceAction12___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1251); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
   variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode4*/,  variable[8] /*listnode8*/); /*new AModule*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label56: while(false);
   tracehead = trace.prev;
   return;
@@ -2817,13 +2817,13 @@ void parser___ReduceAction13___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -2832,13 +2832,13 @@ void parser___ReduceAction13___action(val_t  self, val_t  param0) {
   variable[10] =  variable[7] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1283); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -2849,30 +2849,30 @@ void parser___ReduceAction13___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist4*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1295); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode8*/)( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label58: while(false);
   tracehead = trace.prev;
   return;
@@ -2899,13 +2899,13 @@ void parser___ReduceAction14___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -2917,13 +2917,13 @@ void parser___ReduceAction14___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1336); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -2931,21 +2931,21 @@ void parser___ReduceAction14___action(val_t  self, val_t  param0) {
   variable[13] =  variable[5] /*nodearraylist3*/;
   variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1346); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode4*/,  variable[9] /*listnode8*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label60: while(false);
   tracehead = trace.prev;
   return;
@@ -2972,15 +2972,15 @@ void parser___ReduceAction15___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -2992,13 +2992,13 @@ void parser___ReduceAction15___action(val_t  self, val_t  param0) {
   variable[12] =  variable[7] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1381); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -3009,30 +3009,30 @@ void parser___ReduceAction15___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist5*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1393); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
   variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label62: while(false);
   tracehead = trace.prev;
   return;
@@ -3059,11 +3059,11 @@ void parser___ReduceAction16___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -3077,30 +3077,30 @@ void parser___ReduceAction16___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction16___action, LOCATE_parser, 1434); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
   variable[12] = variable[13];
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode8*/)( variable[8] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[9] /*listnode4*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode8*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/); /*new AModule*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label64: while(false);
   tracehead = trace.prev;
   return;
@@ -3127,13 +3127,13 @@ void parser___ReduceAction17___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -3150,39 +3150,39 @@ void parser___ReduceAction17___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist4*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1478); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode8*/)( variable[11] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label66: while(false);
   tracehead = trace.prev;
   return;
@@ -3209,13 +3209,13 @@ void parser___ReduceAction18___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -3232,30 +3232,30 @@ void parser___ReduceAction18___action(val_t  self, val_t  param0) {
   variable[13] =  variable[5] /*nodearraylist3*/;
   variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1529); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode8*/)( variable[9] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[9] =  variable[11] /*listnode4*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode8*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label68: while(false);
   tracehead = trace.prev;
   return;
@@ -3282,15 +3282,15 @@ void parser___ReduceAction19___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -3310,39 +3310,39 @@ void parser___ReduceAction19___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist5*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1576); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
   variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label70: while(false);
   tracehead = trace.prev;
   return;
@@ -3369,13 +3369,13 @@ void parser___ReduceAction20___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -3384,13 +3384,13 @@ void parser___ReduceAction20___action(val_t  self, val_t  param0) {
   variable[10] =  variable[7] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1622); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[6] /*nodearraylist2*/;
@@ -3401,30 +3401,30 @@ void parser___ReduceAction20___action(val_t  self, val_t  param0) {
   variable[13] =  variable[5] /*nodearraylist3*/;
   variable[14] = TAG_Bool(( variable[13] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1634); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode7*/)( variable[13] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
   variable[14] = variable[15];
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[9] =  variable[11] /*listnode5*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode6*/)( variable[14] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label72: while(false);
   tracehead = trace.prev;
   return;
@@ -3451,15 +3451,15 @@ void parser___ReduceAction21___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -3468,13 +3468,13 @@ void parser___ReduceAction21___action(val_t  self, val_t  param0) {
   variable[11] =  variable[8] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1674); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[7] /*nodearraylist2*/;
@@ -3488,39 +3488,39 @@ void parser___ReduceAction21___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist5*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1688); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode9*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode9*/)( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[13] =  variable[15] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode9*/,  variable[15] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[15] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode9*/); /*new ATopClassdef*/
   variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label74: while(false);
   tracehead = trace.prev;
   return;
@@ -3547,15 +3547,15 @@ void parser___ReduceAction22___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -3567,13 +3567,13 @@ void parser___ReduceAction22___action(val_t  self, val_t  param0) {
   variable[12] =  variable[7] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1737); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] =  variable[6] /*nodearraylist3*/;
@@ -3584,30 +3584,30 @@ void parser___ReduceAction22___action(val_t  self, val_t  param0) {
   variable[15] =  variable[5] /*nodearraylist4*/;
   variable[16] = TAG_Bool(( variable[15] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1749); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
   variable[16] = variable[17];
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[13] /*listnode5*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label76: while(false);
   tracehead = trace.prev;
   return;
@@ -3634,17 +3634,17 @@ void parser___ReduceAction23___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -3656,13 +3656,13 @@ void parser___ReduceAction23___action(val_t  self, val_t  param0) {
   variable[13] =  variable[8] /*nodearraylist2*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1792); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] =  variable[7] /*nodearraylist3*/;
@@ -3676,39 +3676,39 @@ void parser___ReduceAction23___action(val_t  self, val_t  param0) {
   variable[17] =  variable[4] /*nodearraylist6*/;
   variable[18] = TAG_Bool(( variable[17] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1806); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[18])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode9*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[18] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[18])) { /*if*/
       variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[19] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode9*/); /*new ATopClassdef*/
   variable[18] = variable[19];
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode6*/)( variable[18] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/); /*new AModule*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label78: while(false);
   tracehead = trace.prev;
   return;
@@ -3735,7 +3735,7 @@ void parser___ReduceAction24___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -3744,15 +3744,15 @@ void parser___ReduceAction24___action(val_t  self, val_t  param0) {
   variable[7] =  variable[4] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction24___action, LOCATE_parser, 1849); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclassdefnode4*/)( variable[7] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode5*/,  variable[7] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode3*/,  variable[6] /*listnode5*/); /*new AModule*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label80: while(false);
   tracehead = trace.prev;
   return;
@@ -3779,9 +3779,9 @@ void parser___ReduceAction25___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -3793,15 +3793,15 @@ void parser___ReduceAction25___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction25___action, LOCATE_parser, 1875); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode4*/)( variable[9] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[9] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode3*/,  variable[7] /*listnode5*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label82: while(false);
   tracehead = trace.prev;
   return;
@@ -3828,9 +3828,9 @@ void parser___ReduceAction26___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -3839,27 +3839,27 @@ void parser___ReduceAction26___action(val_t  self, val_t  param0) {
   variable[8] =  variable[5] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1899); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1908); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode4*/,  variable[7] /*listnode6*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label84: while(false);
   tracehead = trace.prev;
   return;
@@ -3886,11 +3886,11 @@ void parser___ReduceAction27___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -3902,27 +3902,27 @@ void parser___ReduceAction27___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 1935); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 1944); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/); /*new AModule*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label86: while(false);
   tracehead = trace.prev;
   return;
@@ -3949,9 +3949,9 @@ void parser___ReduceAction28___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -3963,24 +3963,24 @@ void parser___ReduceAction28___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction28___action, LOCATE_parser, 1970); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[8] /*listnode4*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode6*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode3*/,  variable[7] /*listnode6*/); /*new AModule*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label88: while(false);
   tracehead = trace.prev;
   return;
@@ -4007,11 +4007,11 @@ void parser___ReduceAction29___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -4026,24 +4026,24 @@ void parser___ReduceAction29___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 2006); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[10] /*listnode4*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode3*/,  variable[8] /*listnode6*/); /*new AModule*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label90: while(false);
   tracehead = trace.prev;
   return;
@@ -4070,11 +4070,11 @@ void parser___ReduceAction30___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -4083,13 +4083,13 @@ void parser___ReduceAction30___action(val_t  self, val_t  param0) {
   variable[9] =  variable[6] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 2038); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] =  variable[5] /*nodearraylist2*/;
@@ -4098,24 +4098,24 @@ void parser___ReduceAction30___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 2049); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[10] /*listnode5*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode6*/)( variable[11] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode7*/,  variable[11] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[11] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode4*/,  variable[8] /*listnode7*/); /*new AModule*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label92: while(false);
   tracehead = trace.prev;
   return;
@@ -4142,13 +4142,13 @@ void parser___ReduceAction31___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -4160,13 +4160,13 @@ void parser___ReduceAction31___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2084); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[5] /*nodearraylist3*/;
@@ -4175,24 +4175,24 @@ void parser___ReduceAction31___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist4*/;
   variable[14] = TAG_Bool(( variable[13] /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2095); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode7*/)( variable[9] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[12] /*listnode5*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode7*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode6*/)( variable[13] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode7*/,  variable[13] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[13] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable[15] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode4*/,  variable[9] /*listnode7*/); /*new AModule*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pmodulenode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label94: while(false);
   tracehead = trace.prev;
   return;
@@ -4219,11 +4219,11 @@ void parser___ReduceAction32___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -4234,28 +4234,28 @@ void parser___ReduceAction32___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2128); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode6*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode6*/)( variable[9] /*listnode6*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable[12] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode6*/); /*new ATopClassdef*/
   variable[11] = variable[12];
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable[12] /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2136); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode4*/)( variable[11] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[11] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[11] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[12] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode7*/)( variable[12] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode7*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/); /*new AModule*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label96: while(false);
   tracehead = trace.prev;
   return;
@@ -4282,13 +4282,13 @@ void parser___ReduceAction33___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -4302,17 +4302,17 @@ void parser___ReduceAction33___action(val_t  self, val_t  param0) {
   variable[12] =  variable[5] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2168); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode7*/)( variable[10] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/); /*new ATopClassdef*/
@@ -4320,19 +4320,19 @@ void parser___ReduceAction33___action(val_t  self, val_t  param0) {
   variable[14] =  variable[4] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2183); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label98: while(false);
   tracehead = trace.prev;
   return;
@@ -4359,13 +4359,13 @@ void parser___ReduceAction34___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -4379,28 +4379,28 @@ void parser___ReduceAction34___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2215); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode6*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode6*/); /*new ATopClassdef*/
   variable[13] = variable[14];
   variable[14] =  variable[4] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2223); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode7*/)( variable[14] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode7*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label100: while(false);
   tracehead = trace.prev;
   return;
@@ -4427,15 +4427,15 @@ void parser___ReduceAction35___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -4452,17 +4452,17 @@ void parser___ReduceAction35___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2258); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode5*/)( variable[13] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode6*/)( variable[14] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode7*/)( variable[12] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[12] =  variable[14] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode7*/,  variable[14] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[14] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/); /*new ATopClassdef*/
@@ -4470,19 +4470,19 @@ void parser___ReduceAction35___action(val_t  self, val_t  param0) {
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2273); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode4*/)( variable[15] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label102: while(false);
   tracehead = trace.prev;
   return;
@@ -4509,13 +4509,13 @@ void parser___ReduceAction36___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -4524,13 +4524,13 @@ void parser___ReduceAction36___action(val_t  self, val_t  param0) {
   variable[10] =  variable[7] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2302); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -4538,28 +4538,28 @@ void parser___ReduceAction36___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2312); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
   variable[13] = variable[14];
   variable[14] =  variable[4] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2320); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label104: while(false);
   tracehead = trace.prev;
   return;
@@ -4586,15 +4586,15 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -4603,13 +4603,13 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   variable[11] =  variable[8] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2350); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -4620,17 +4620,17 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2362); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
@@ -4638,19 +4638,19 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2377); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label106: while(false);
   tracehead = trace.prev;
   return;
@@ -4677,15 +4677,15 @@ void parser___ReduceAction38___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -4697,13 +4697,13 @@ void parser___ReduceAction38___action(val_t  self, val_t  param0) {
   variable[12] =  variable[7] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2409); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -4711,28 +4711,28 @@ void parser___ReduceAction38___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist3*/;
   variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2419); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/); /*new ATopClassdef*/
   variable[15] = variable[16];
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2427); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label108: while(false);
   tracehead = trace.prev;
   return;
@@ -4759,17 +4759,17 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -4781,13 +4781,13 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   variable[13] =  variable[8] /*nodearraylist2*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2460); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
@@ -4798,17 +4798,17 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   variable[16] =  variable[5] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2472); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
@@ -4816,19 +4816,19 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   variable[18] =  variable[4] /*nodearraylist6*/;
   variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2487); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/); /*new AModule*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label110: while(false);
   tracehead = trace.prev;
   return;
@@ -4855,13 +4855,13 @@ void parser___ReduceAction40___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -4875,37 +4875,37 @@ void parser___ReduceAction40___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2519); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/); /*new ATopClassdef*/
   variable[13] = variable[14];
   variable[14] =  variable[4] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2527); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/); /*new AModule*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label112: while(false);
   tracehead = trace.prev;
   return;
@@ -4932,15 +4932,15 @@ void parser___ReduceAction41___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -4957,17 +4957,17 @@ void parser___ReduceAction41___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist4*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2569); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/); /*new ATopClassdef*/
@@ -4975,28 +4975,28 @@ void parser___ReduceAction41___action(val_t  self, val_t  param0) {
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2584); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[11] /*listnode4*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode3*/,  variable[10] /*listnode10*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label114: while(false);
   tracehead = trace.prev;
   return;
@@ -5023,15 +5023,15 @@ void parser___ReduceAction42___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -5048,37 +5048,37 @@ void parser___ReduceAction42___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist3*/;
   variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2626); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/); /*new ATopClassdef*/
   variable[15] = variable[16];
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2634); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label116: while(false);
   tracehead = trace.prev;
   return;
@@ -5105,17 +5105,17 @@ void parser___ReduceAction43___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -5135,17 +5135,17 @@ void parser___ReduceAction43___action(val_t  self, val_t  param0) {
   variable[16] =  variable[5] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2679); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/); /*new ATopClassdef*/
@@ -5153,28 +5153,28 @@ void parser___ReduceAction43___action(val_t  self, val_t  param0) {
   variable[18] =  variable[4] /*nodearraylist6*/;
   variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2694); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[11] =  variable[13] /*listnode4*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode3*/,  variable[11] /*listnode10*/); /*new AModule*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label118: while(false);
   tracehead = trace.prev;
   return;
@@ -5201,15 +5201,15 @@ void parser___ReduceAction44___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -5218,13 +5218,13 @@ void parser___ReduceAction44___action(val_t  self, val_t  param0) {
   variable[11] =  variable[8] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2731); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[7] /*nodearraylist2*/;
@@ -5235,37 +5235,37 @@ void parser___ReduceAction44___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist3*/;
   variable[15] = TAG_Bool(( variable[14] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2743); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/); /*new ATopClassdef*/
   variable[15] = variable[16];
   variable[16] =  variable[4] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2751); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode6*/)( variable[15] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/); /*new AModule*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label120: while(false);
   tracehead = trace.prev;
   return;
@@ -5292,17 +5292,17 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -5311,13 +5311,13 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   variable[12] =  variable[9] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2789); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] =  variable[8] /*nodearraylist2*/;
@@ -5331,17 +5331,17 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   variable[16] =  variable[5] /*nodearraylist5*/;
   variable[17] = TAG_Bool(( variable[16] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2803); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode9*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[16] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    variable[17] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode9*/)( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[17])) { /*if*/
       variable[14] =  variable[16] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode9*/,  variable[16] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[16] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode9*/); /*new ATopClassdef*/
@@ -5349,28 +5349,28 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   variable[18] =  variable[4] /*nodearraylist6*/;
   variable[19] = TAG_Bool(( variable[18] /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2818); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode11*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode11*/)( variable[11] /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[11] =  variable[13] /*listnode5*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode11*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode11*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode10*/)( variable[18] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode11*/,  variable[18] /*pclassdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[18] /*pclassdefnode10*/) /*AbstractArray::add*/;
   }
   variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[10] /*listnode4*/,  variable[11] /*listnode11*/); /*new AModule*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label122: while(false);
   tracehead = trace.prev;
   return;
@@ -5397,17 +5397,17 @@ void parser___ReduceAction46___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -5419,13 +5419,13 @@ void parser___ReduceAction46___action(val_t  self, val_t  param0) {
   variable[13] =  variable[8] /*nodearraylist2*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2858); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] =  variable[7] /*nodearraylist3*/;
@@ -5436,37 +5436,37 @@ void parser___ReduceAction46___action(val_t  self, val_t  param0) {
   variable[16] =  variable[6] /*nodearraylist4*/;
   variable[17] = TAG_Bool(( variable[16] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2870); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode8*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode8*/); /*new ATopClassdef*/
   variable[17] = variable[18];
   variable[18] =  variable[4] /*nodearraylist6*/;
   variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2878); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[11] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/); /*new AModule*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label124: while(false);
   tracehead = trace.prev;
   return;
@@ -5493,19 +5493,19 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -5517,13 +5517,13 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   variable[14] =  variable[9] /*nodearraylist2*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2919); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode3*/)( variable[14] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode4*/)( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[11] =  variable[14] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode4*/,  variable[14] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  variable[14] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[8] /*nodearraylist3*/;
@@ -5537,17 +5537,17 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   variable[18] =  variable[5] /*nodearraylist6*/;
   variable[19] = TAG_Bool(( variable[18] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2933); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[17] /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable[17] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[17] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*ppropdefnode7*/)( variable[17] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode9*/,  variable[17] /*ppropdefnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[17] /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*listnode8*/)( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[20] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[16] /*listnode9*/); /*new ATopClassdef*/
@@ -5555,28 +5555,28 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   variable[20] =  variable[4] /*nodearraylist7*/;
   variable[21] = TAG_Bool(( variable[20] /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2948); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode11*/) /*AbstractArray::is_empty*/;
+    variable[21] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode11*/)( variable[12] /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[21])) { /*if*/
       variable[12] =  variable[15] /*listnode5*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode11*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[19] /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable[19] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[19] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*pclassdefnode6*/)( variable[19] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode11*/,  variable[19] /*pclassdefnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[19] /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[20] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*pclassdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*pclassdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*pclassdefnode10*/)( variable[20] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode11*/,  variable[20] /*pclassdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[20] /*pclassdefnode10*/) /*AbstractArray::add*/;
   }
   variable[22] = NEW_AModule_parser_prod___AModule___init_amodule( variable[13] /*ppackagedeclnode2*/,  variable[11] /*listnode4*/,  variable[12] /*listnode11*/); /*new AModule*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pmodulenode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label126: while(false);
   tracehead = trace.prev;
   return;
@@ -5603,15 +5603,15 @@ void parser___ReduceAction48___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -5625,8 +5625,8 @@ void parser___ReduceAction48___action(val_t  self, val_t  param0) {
   variable[13] = NEW_APackagedecl_parser_prod___APackagedecl___init_apackagedecl( variable[9] /*pdocnode2*/,  variable[10] /*tkwpackagenode3*/,  variable[11] /*tidnode4*/); /*new APackagedecl*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*ppackagedeclnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(1)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(1)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label128: while(false);
   tracehead = trace.prev;
   return;
@@ -5653,17 +5653,17 @@ void parser___ReduceAction49___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[8] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
@@ -5677,8 +5677,8 @@ void parser___ReduceAction49___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AImport_parser_prod___AImport___init_aimport( variable[10] /*pvisibilitynode2*/,  variable[11] /*tkwimportnode3*/,  variable[12] /*tidnode4*/); /*new AImport*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pimportnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label130: while(false);
   tracehead = trace.prev;
   return;
@@ -5705,17 +5705,17 @@ void parser___ReduceAction50___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[8] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
@@ -5729,8 +5729,8 @@ void parser___ReduceAction50___action(val_t  self, val_t  param0) {
   variable[14] = NEW_ANoImport_parser_prod___ANoImport___init_anoimport( variable[10] /*pvisibilitynode2*/,  variable[11] /*tkwimportnode3*/,  variable[12] /*tkwendnode4*/); /*new ANoImport*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pimportnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label132: while(false);
   tracehead = trace.prev;
   return;
@@ -5757,22 +5757,22 @@ void parser___ReduceAction51___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction51___action, LOCATE_parser, 3060); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode2*/)( variable[6] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode3*/,  variable[6] /*ppropdefnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable[8] = NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef( variable[5] /*listnode3*/); /*new AMainClassdef*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pclassdefnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label134: while(false);
   tracehead = trace.prev;
   return;
@@ -5799,11 +5799,11 @@ void parser___ReduceAction52___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label136: while(false);
   tracehead = trace.prev;
   return;
@@ -5830,28 +5830,28 @@ void parser___ReduceAction53___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
   variable[8] =  variable[5] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction53___action, LOCATE_parser, 3093); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode4*/)( variable[8] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[8] /*pexprnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[8] /*pexprnode4*/) /*AbstractArray::add*/;
   }
   variable[10] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[7] /*listnode5*/); /*new ABlockExpr*/
   variable[9] = variable[10];
   variable[11] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef( NIT_NULL /*null*/,  variable[9] /*pexprnode3*/); /*new AMainMethPropdef*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*ppropdefnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label138: while(false);
   tracehead = trace.prev;
   return;
@@ -5878,13 +5878,13 @@ void parser___ReduceAction54___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -5894,17 +5894,17 @@ void parser___ReduceAction54___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction54___action, LOCATE_parser, 3122); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode4*/)( variable[9] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode6*/,  variable[9] /*pexprnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[9] /*pexprnode4*/) /*AbstractArray::add*/;
   }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode6*/); /*new ABlockExpr*/
@@ -5912,8 +5912,8 @@ void parser___ReduceAction54___action(val_t  self, val_t  param0) {
   variable[13] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef( NIT_NULL /*null*/,  variable[11] /*pexprnode3*/); /*new AMainMethPropdef*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label140: while(false);
   tracehead = trace.prev;
   return;
@@ -5940,19 +5940,19 @@ void parser___ReduceAction55___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -5975,8 +5975,8 @@ void parser___ReduceAction55___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*pclasskindnode5*/,  variable[17] /*tclassidnode6*/,  variable[11] /*listnode7*/,  variable[12] /*listnode8*/,  variable[13] /*listnode9*/); /*new AClassdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*pclassdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label142: while(false);
   tracehead = trace.prev;
   return;
@@ -6003,21 +6003,21 @@ void parser___ReduceAction56___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[12] = variable[13];
@@ -6043,8 +6043,8 @@ void parser___ReduceAction56___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[12] /*listnode7*/,  variable[13] /*listnode8*/,  variable[14] /*listnode9*/); /*new AClassdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label144: while(false);
   tracehead = trace.prev;
   return;
@@ -6071,21 +6071,21 @@ void parser___ReduceAction57___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[12] = variable[13];
@@ -6108,20 +6108,20 @@ void parser___ReduceAction57___action(val_t  self, val_t  param0) {
   variable[19] =  variable[6] /*nodearraylist6*/;
   variable[20] = TAG_Bool(( variable[19] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3249); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*listnode7*/)( variable[19] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[20] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[20])) { /*if*/
       variable[12] =  variable[19] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[12] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[12] /*listnode8*/,  variable[19] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[19] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*pclasskindnode5*/,  variable[18] /*tclassidnode6*/,  variable[12] /*listnode8*/,  variable[13] /*listnode9*/,  variable[14] /*listnode10*/); /*new AClassdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label146: while(false);
   tracehead = trace.prev;
   return;
@@ -6148,23 +6148,23 @@ void parser___ReduceAction58___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[13] = variable[14];
@@ -6190,20 +6190,20 @@ void parser___ReduceAction58___action(val_t  self, val_t  param0) {
   variable[21] =  variable[6] /*nodearraylist7*/;
   variable[22] = TAG_Bool(( variable[21] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3300); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[22])) { /*if*/
       variable[13] =  variable[21] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[13] /*listnode8*/,  variable[14] /*listnode9*/,  variable[15] /*listnode10*/); /*new AClassdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label148: while(false);
   tracehead = trace.prev;
   return;
@@ -6230,21 +6230,21 @@ void parser___ReduceAction59___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[13] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[12] = variable[13];
@@ -6267,20 +6267,20 @@ void parser___ReduceAction59___action(val_t  self, val_t  param0) {
   variable[19] =  variable[6] /*nodearraylist6*/;
   variable[20] = TAG_Bool(( variable[19] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3348); nit_exit(1);}
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[19] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*listnode8*/)( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[20])) { /*if*/
-    variable[20] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[20] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode9*/)( variable[13] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[20])) { /*if*/
       variable[13] =  variable[19] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*pclasskindnode5*/,  variable[18] /*tclassidnode6*/,  variable[12] /*listnode7*/,  variable[13] /*listnode9*/,  variable[14] /*listnode10*/); /*new AClassdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label150: while(false);
   tracehead = trace.prev;
   return;
@@ -6307,23 +6307,23 @@ void parser___ReduceAction60___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[13] = variable[14];
@@ -6349,20 +6349,20 @@ void parser___ReduceAction60___action(val_t  self, val_t  param0) {
   variable[21] =  variable[6] /*nodearraylist7*/;
   variable[22] = TAG_Bool(( variable[21] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3399); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode9*/)( variable[14] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[22])) { /*if*/
       variable[14] =  variable[21] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[13] /*listnode7*/,  variable[14] /*listnode9*/,  variable[15] /*listnode10*/); /*new AClassdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label152: while(false);
   tracehead = trace.prev;
   return;
@@ -6389,23 +6389,23 @@ void parser___ReduceAction61___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[13] = variable[14];
@@ -6428,32 +6428,32 @@ void parser___ReduceAction61___action(val_t  self, val_t  param0) {
   variable[20] =  variable[7] /*nodearraylist6*/;
   variable[21] = TAG_Bool(( variable[20] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3448); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[20] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*listnode7*/)( variable[20] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[21])) { /*if*/
-    variable[21] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[21] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[21])) { /*if*/
       variable[13] =  variable[20] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[20] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[20] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[21] =  variable[6] /*nodearraylist7*/;
   variable[22] = TAG_Bool(( variable[21] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3457); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode9*/)( variable[21] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode10*/)( variable[14] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[22])) { /*if*/
       variable[14] =  variable[21] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode10*/,  variable[21] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode10*/)( variable[14] /*listnode10*/,  variable[21] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[13] /*listnode8*/,  variable[14] /*listnode10*/,  variable[15] /*listnode11*/); /*new AClassdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label154: while(false);
   tracehead = trace.prev;
   return;
@@ -6480,25 +6480,25 @@ void parser___ReduceAction62___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[14] = variable[15];
@@ -6524,32 +6524,32 @@ void parser___ReduceAction62___action(val_t  self, val_t  param0) {
   variable[22] =  variable[7] /*nodearraylist7*/;
   variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3509); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[23])) { /*if*/
       variable[14] =  variable[22] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] =  variable[6] /*nodearraylist8*/;
   variable[24] = TAG_Bool(( variable[23] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3518); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode10*/)( variable[15] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[24])) { /*if*/
       variable[15] =  variable[23] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode10*/)( variable[15] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[25] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  variable[18] /*tkwredefnode3*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[14] /*listnode8*/,  variable[15] /*listnode10*/,  variable[16] /*listnode11*/); /*new AClassdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*pclassdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label156: while(false);
   tracehead = trace.prev;
   return;
@@ -6576,23 +6576,23 @@ void parser___ReduceAction63___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[14] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[13] = variable[14];
@@ -6615,15 +6615,15 @@ void parser___ReduceAction63___action(val_t  self, val_t  param0) {
   variable[20] =  variable[7] /*nodearraylist6*/;
   variable[21] = TAG_Bool(( variable[20] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3567); nit_exit(1);}
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[20] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[20] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[20] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[20] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[20] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*ppropdefnode9*/)( variable[20] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[21])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode10*/,  variable[20] /*ppropdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode10*/)( variable[15] /*listnode10*/,  variable[20] /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
   variable[22] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[13] /*listnode7*/,  variable[14] /*listnode8*/,  variable[15] /*listnode10*/); /*new AClassdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pclassdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label158: while(false);
   tracehead = trace.prev;
   return;
@@ -6650,25 +6650,25 @@ void parser___ReduceAction64___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[14] = variable[15];
@@ -6694,24 +6694,24 @@ void parser___ReduceAction64___action(val_t  self, val_t  param0) {
   variable[22] =  variable[6] /*nodearraylist8*/;
   variable[23] = TAG_Bool(( variable[22] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3615); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[21] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*ppropdefnode9*/)( variable[21] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[21] /*ppropdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[21] /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode10*/)( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
+    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode11*/)( variable[16] /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[23])) { /*if*/
       variable[16] =  variable[22] /*listnode10*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
     }
   }
   variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode8*/,  variable[16] /*listnode11*/); /*new AClassdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label160: while(false);
   tracehead = trace.prev;
   return;
@@ -6738,25 +6738,25 @@ void parser___ReduceAction65___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[14] = variable[15];
@@ -6782,15 +6782,15 @@ void parser___ReduceAction65___action(val_t  self, val_t  param0) {
   variable[22] =  variable[7] /*nodearraylist7*/;
   variable[23] = TAG_Bool(( variable[22] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3670); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode9*/)( variable[22] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode10*/,  variable[22] /*ppropdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode10*/)( variable[16] /*listnode10*/,  variable[22] /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
   variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  variable[18] /*tkwredefnode3*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode8*/,  variable[16] /*listnode10*/); /*new AClassdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label162: while(false);
   tracehead = trace.prev;
   return;
@@ -6817,27 +6817,27 @@ void parser___ReduceAction66___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -6866,24 +6866,24 @@ void parser___ReduceAction66___action(val_t  self, val_t  param0) {
   variable[24] =  variable[6] /*nodearraylist9*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3721); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode9*/)( variable[23] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[23] /*ppropdefnode9*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[23] /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode10*/)( variable[24] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode11*/)( variable[17] /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[17] =  variable[24] /*listnode10*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode11*/,  variable[24] /*listnode10*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*listnode10*/) /*IndexedCollection::append*/;
     }
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode8*/,  variable[17] /*listnode11*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label164: while(false);
   tracehead = trace.prev;
   return;
@@ -6910,25 +6910,25 @@ void parser___ReduceAction67___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[14] = variable[15];
@@ -6951,27 +6951,27 @@ void parser___ReduceAction67___action(val_t  self, val_t  param0) {
   variable[21] =  variable[8] /*nodearraylist6*/;
   variable[22] = TAG_Bool(( variable[21] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3774); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[22])) { /*if*/
       variable[14] =  variable[21] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[14] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[22] =  variable[7] /*nodearraylist7*/;
   variable[23] = TAG_Bool(( variable[22] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3783); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode8*/,  variable[15] /*listnode9*/,  variable[16] /*listnode11*/); /*new AClassdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label166: while(false);
   tracehead = trace.prev;
   return;
@@ -6998,27 +6998,27 @@ void parser___ReduceAction68___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -7041,13 +7041,13 @@ void parser___ReduceAction68___action(val_t  self, val_t  param0) {
   variable[22] =  variable[9] /*nodearraylist6*/;
   variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3830); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[23])) { /*if*/
       variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] =  variable[8] /*nodearraylist7*/;
@@ -7056,24 +7056,24 @@ void parser___ReduceAction68___action(val_t  self, val_t  param0) {
   variable[24] =  variable[6] /*nodearraylist9*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3841); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode12*/)( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode9*/,  variable[17] /*listnode12*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label168: while(false);
   tracehead = trace.prev;
   return;
@@ -7100,27 +7100,27 @@ void parser___ReduceAction69___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -7146,27 +7146,27 @@ void parser___ReduceAction69___action(val_t  self, val_t  param0) {
   variable[23] =  variable[8] /*nodearraylist7*/;
   variable[24] = TAG_Bool(( variable[23] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3897); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[24])) { /*if*/
       variable[15] =  variable[23] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[24] =  variable[7] /*nodearraylist8*/;
   variable[25] = TAG_Bool(( variable[24] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3906); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode9*/,  variable[17] /*listnode11*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label170: while(false);
   tracehead = trace.prev;
   return;
@@ -7193,29 +7193,29 @@ void parser___ReduceAction70___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[16] = variable[17];
@@ -7241,13 +7241,13 @@ void parser___ReduceAction70___action(val_t  self, val_t  param0) {
   variable[24] =  variable[9] /*nodearraylist7*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3956); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[25] =  variable[8] /*nodearraylist8*/;
@@ -7256,24 +7256,24 @@ void parser___ReduceAction70___action(val_t  self, val_t  param0) {
   variable[26] =  variable[6] /*nodearraylist10*/;
   variable[27] = TAG_Bool(( variable[26] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3967); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
+    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode12*/)( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[27])) { /*if*/
       variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode9*/,  variable[18] /*listnode12*/); /*new AClassdef*/
   variable[27] = variable[28];
   variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label172: while(false);
   tracehead = trace.prev;
   return;
@@ -7300,25 +7300,25 @@ void parser___ReduceAction71___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[15] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[14] = variable[15];
@@ -7341,27 +7341,27 @@ void parser___ReduceAction71___action(val_t  self, val_t  param0) {
   variable[21] =  variable[8] /*nodearraylist6*/;
   variable[22] = TAG_Bool(( variable[21] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4020); nit_exit(1);}
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[21] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[22])) { /*if*/
-    variable[22] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[22])) { /*if*/
       variable[15] =  variable[21] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[22] =  variable[7] /*nodearraylist7*/;
   variable[23] = TAG_Bool(( variable[22] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4029); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode9*/,  variable[16] /*listnode11*/); /*new AClassdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label174: while(false);
   tracehead = trace.prev;
   return;
@@ -7388,27 +7388,27 @@ void parser___ReduceAction72___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -7431,13 +7431,13 @@ void parser___ReduceAction72___action(val_t  self, val_t  param0) {
   variable[22] =  variable[9] /*nodearraylist6*/;
   variable[23] = TAG_Bool(( variable[22] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4076); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode8*/)( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[23])) { /*if*/
       variable[16] =  variable[22] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] =  variable[8] /*nodearraylist7*/;
@@ -7446,24 +7446,24 @@ void parser___ReduceAction72___action(val_t  self, val_t  param0) {
   variable[24] =  variable[6] /*nodearraylist9*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4087); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode12*/)( variable[17] /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode9*/,  variable[17] /*listnode12*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label176: while(false);
   tracehead = trace.prev;
   return;
@@ -7490,27 +7490,27 @@ void parser___ReduceAction73___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -7536,27 +7536,27 @@ void parser___ReduceAction73___action(val_t  self, val_t  param0) {
   variable[23] =  variable[8] /*nodearraylist7*/;
   variable[24] = TAG_Bool(( variable[23] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4143); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode8*/)( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[24])) { /*if*/
       variable[16] =  variable[23] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[24] =  variable[7] /*nodearraylist8*/;
   variable[25] = TAG_Bool(( variable[24] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4152); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode9*/,  variable[17] /*listnode11*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label178: while(false);
   tracehead = trace.prev;
   return;
@@ -7583,29 +7583,29 @@ void parser___ReduceAction74___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[16] = variable[17];
@@ -7631,13 +7631,13 @@ void parser___ReduceAction74___action(val_t  self, val_t  param0) {
   variable[24] =  variable[9] /*nodearraylist7*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4202); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode8*/)( variable[24] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode9*/)( variable[17] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[17] =  variable[24] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode9*/,  variable[24] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode9*/)( variable[17] /*listnode9*/,  variable[24] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[25] =  variable[8] /*nodearraylist8*/;
@@ -7646,24 +7646,24 @@ void parser___ReduceAction74___action(val_t  self, val_t  param0) {
   variable[26] =  variable[6] /*nodearraylist10*/;
   variable[27] = TAG_Bool(( variable[26] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4213); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
+    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode12*/)( variable[18] /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[27])) { /*if*/
       variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode7*/,  variable[17] /*listnode9*/,  variable[18] /*listnode12*/); /*new AClassdef*/
   variable[27] = variable[28];
   variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label180: while(false);
   tracehead = trace.prev;
   return;
@@ -7690,27 +7690,27 @@ void parser___ReduceAction75___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[16] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[15] = variable[16];
@@ -7733,39 +7733,39 @@ void parser___ReduceAction75___action(val_t  self, val_t  param0) {
   variable[22] =  variable[9] /*nodearraylist6*/;
   variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4267); nit_exit(1);}
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[22] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[23])) { /*if*/
-    variable[23] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[23])) { /*if*/
       variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[23] =  variable[8] /*nodearraylist7*/;
   variable[24] = TAG_Bool(( variable[23] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4276); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode10*/)( variable[16] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[24])) { /*if*/
       variable[16] =  variable[23] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode10*/)( variable[16] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[24] =  variable[7] /*nodearraylist8*/;
   variable[25] = TAG_Bool(( variable[24] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4285); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[24] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode11*/)( variable[24] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[17] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[17] /*listnode12*/,  variable[24] /*ppropdefnode11*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
   variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode10*/,  variable[17] /*listnode12*/); /*new AClassdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label182: while(false);
   tracehead = trace.prev;
   return;
@@ -7792,29 +7792,29 @@ void parser___ReduceAction76___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[16] = variable[17];
@@ -7837,25 +7837,25 @@ void parser___ReduceAction76___action(val_t  self, val_t  param0) {
   variable[23] =  variable[10] /*nodearraylist6*/;
   variable[24] = TAG_Bool(( variable[23] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4333); nit_exit(1);}
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[23] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[24])) { /*if*/
-    variable[24] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[24])) { /*if*/
       variable[16] =  variable[23] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[24] =  variable[9] /*nodearraylist7*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4342); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode9*/)( variable[24] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode10*/)( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[17] =  variable[24] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode10*/,  variable[24] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode10*/)( variable[17] /*listnode10*/,  variable[24] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[25] =  variable[8] /*nodearraylist8*/;
@@ -7864,24 +7864,24 @@ void parser___ReduceAction76___action(val_t  self, val_t  param0) {
   variable[26] =  variable[6] /*nodearraylist10*/;
   variable[27] = TAG_Bool(( variable[26] /*listnode12*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4353); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[25] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode11*/)( variable[25] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode13*/,  variable[25] /*ppropdefnode11*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode13*/)( variable[18] /*listnode13*/,  variable[25] /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode12*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode12*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode12*/)( variable[26] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode13*/) /*AbstractArray::is_empty*/;
+    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode13*/)( variable[18] /*listnode13*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[27])) { /*if*/
       variable[18] =  variable[26] /*listnode12*/ /*listnode13=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode13*/,  variable[26] /*listnode12*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode13*/)( variable[18] /*listnode13*/,  variable[26] /*listnode12*/) /*IndexedCollection::append*/;
     }
   }
   variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode10*/,  variable[18] /*listnode13*/); /*new AClassdef*/
   variable[27] = variable[28];
   variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label184: while(false);
   tracehead = trace.prev;
   return;
@@ -7908,29 +7908,29 @@ void parser___ReduceAction77___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[17] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[16] = variable[17];
@@ -7956,39 +7956,39 @@ void parser___ReduceAction77___action(val_t  self, val_t  param0) {
   variable[24] =  variable[9] /*nodearraylist7*/;
   variable[25] = TAG_Bool(( variable[24] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4410); nit_exit(1);}
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[24] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[25])) { /*if*/
-    variable[25] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[25])) { /*if*/
       variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[25] =  variable[8] /*nodearraylist8*/;
   variable[26] = TAG_Bool(( variable[25] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4419); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*listnode9*/)( variable[25] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[26] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode10*/)( variable[17] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[26])) { /*if*/
       variable[17] =  variable[25] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode10*/,  variable[25] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode10*/)( variable[17] /*listnode10*/,  variable[25] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[26] =  variable[7] /*nodearraylist9*/;
   variable[27] = TAG_Bool(( variable[26] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4428); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[26] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*ppropdefnode11*/)( variable[26] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[18] /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable[18] /*listnode12*/,  variable[26] /*ppropdefnode11*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
   variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode10*/,  variable[18] /*listnode12*/); /*new AClassdef*/
   variable[27] = variable[28];
   variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  variable[28] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label186: while(false);
   tracehead = trace.prev;
   return;
@@ -8015,31 +8015,31 @@ void parser___ReduceAction78___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
-  variable[17] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[17] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[16] = variable[17];
   variable[18] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[17] = variable[18];
@@ -8065,25 +8065,25 @@ void parser___ReduceAction78___action(val_t  self, val_t  param0) {
   variable[25] =  variable[10] /*nodearraylist7*/;
   variable[26] = TAG_Bool(( variable[25] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4479); nit_exit(1);}
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[25] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[25] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*listnode7*/)( variable[25] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[26])) { /*if*/
-    variable[26] = ((array___AbstractArray___is_empty_t)CALL( variable[17] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[17] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[26] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode8*/)( variable[17] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[26])) { /*if*/
       variable[17] =  variable[25] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[17] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[17] /*listnode8*/,  variable[25] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  variable[25] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[26] =  variable[9] /*nodearraylist8*/;
   variable[27] = TAG_Bool(( variable[26] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4488); nit_exit(1);}
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[26] /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable[26] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode9*/)( variable[26] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[27])) { /*if*/
-    variable[27] = ((array___AbstractArray___is_empty_t)CALL( variable[18] /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable[18] /*listnode10*/) /*AbstractArray::is_empty*/;
+    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode10*/)( variable[18] /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[27])) { /*if*/
       variable[18] =  variable[26] /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[18] /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable[18] /*listnode10*/,  variable[26] /*listnode9*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode10*/)( variable[18] /*listnode10*/,  variable[26] /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable[27] =  variable[8] /*nodearraylist9*/;
@@ -8092,24 +8092,24 @@ void parser___ReduceAction78___action(val_t  self, val_t  param0) {
   variable[28] =  variable[6] /*nodearraylist11*/;
   variable[29] = TAG_Bool(( variable[28] /*listnode12*/==NIT_NULL) || VAL_ISA( variable[28] /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[29])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4499); nit_exit(1);}
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[27] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[27] /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[27] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[27] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[27] /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable[27] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[27] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[27] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[27] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[27] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[27] /*ppropdefnode11*/)( variable[27] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[29])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable[19] /*listnode13*/,  variable[27] /*ppropdefnode11*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[19] /*listnode13*/)( variable[19] /*listnode13*/,  variable[27] /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[28] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[28] /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[28] /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[28] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[28] /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable[28] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[28] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[28] /*listnode12*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[28] /*listnode12*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[28] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[28] /*listnode12*/)( variable[28] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[29])) { /*if*/
-    variable[29] = ((array___AbstractArray___is_empty_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable[19] /*listnode13*/) /*AbstractArray::is_empty*/;
+    variable[29] = CALL_abstract_collection___Collection___is_empty( variable[19] /*listnode13*/)( variable[19] /*listnode13*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[29])) { /*if*/
       variable[19] =  variable[28] /*listnode12*/ /*listnode13=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[19] /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable[19] /*listnode13*/,  variable[28] /*listnode12*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[19] /*listnode13*/)( variable[19] /*listnode13*/,  variable[28] /*listnode12*/) /*IndexedCollection::append*/;
     }
   }
   variable[30] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[20] /*pdocnode2*/,  variable[21] /*tkwredefnode3*/,  variable[22] /*pvisibilitynode4*/,  variable[23] /*pclasskindnode5*/,  variable[24] /*tclassidnode6*/,  variable[17] /*listnode8*/,  variable[18] /*listnode10*/,  variable[19] /*listnode13*/); /*new AClassdef*/
   variable[29] = variable[30];
   variable[3] =  variable[29] /*pclassdefnode1*/ /*node_list=*/;
-  variable[30] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[30],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[30] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[30],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label188: while(false);
   tracehead = trace.prev;
   return;
@@ -8136,7 +8136,7 @@ void parser___ReduceAction79___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwclassnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwclassnode2*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
@@ -8144,8 +8144,8 @@ void parser___ReduceAction79___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind( variable[5] /*tkwclassnode2*/); /*new AConcreteClasskind*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label190: while(false);
   tracehead = trace.prev;
   return;
@@ -8172,9 +8172,9 @@ void parser___ReduceAction80___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwabstractnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwabstractnode2*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
@@ -8185,8 +8185,8 @@ void parser___ReduceAction80___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind( variable[6] /*tkwabstractnode2*/,  variable[7] /*tkwclassnode3*/); /*new AAbstractClasskind*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pclasskindnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label192: while(false);
   tracehead = trace.prev;
   return;
@@ -8213,7 +8213,7 @@ void parser___ReduceAction81___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwinterfacenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwinterfacenode2*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
@@ -8221,8 +8221,8 @@ void parser___ReduceAction81___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind( variable[5] /*tkwinterfacenode2*/); /*new AInterfaceClasskind*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label194: while(false);
   tracehead = trace.prev;
   return;
@@ -8249,7 +8249,7 @@ void parser___ReduceAction82___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwuniversalnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwuniversalnode2*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
@@ -8257,8 +8257,8 @@ void parser___ReduceAction82___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind( variable[5] /*tkwuniversalnode2*/); /*new AUniversalClasskind*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label196: while(false);
   tracehead = trace.prev;
   return;
@@ -8285,28 +8285,28 @@ void parser___ReduceAction83___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
   variable[10] =  variable[6] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction83___action, LOCATE_parser, 4605); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pformaldefnode1*/)( variable[10] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pformaldefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label198: while(false);
   tracehead = trace.prev;
   return;
@@ -8333,17 +8333,17 @@ void parser___ReduceAction84___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -8353,22 +8353,22 @@ void parser___ReduceAction84___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist4*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction84___action, LOCATE_parser, 4629); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pformaldefnode1*/)( variable[11] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pformaldefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label200: while(false);
   tracehead = trace.prev;
   return;
@@ -8395,18 +8395,18 @@ void parser___ReduceAction85___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist3*/;
   variable[8] = TAG_Bool(( variable[7] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction85___action, LOCATE_parser, 4654); nit_exit(1);}
   variable[3] =  variable[7] /*pformaldefnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(8)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(8)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label202: while(false);
   tracehead = trace.prev;
   return;
@@ -8433,7 +8433,7 @@ void parser___ReduceAction86___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
@@ -8441,8 +8441,8 @@ void parser___ReduceAction86___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef( variable[5] /*tclassidnode2*/,  NIT_NULL /*null*/); /*new AFormaldef*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pformaldefnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label204: while(false);
   tracehead = trace.prev;
   return;
@@ -8469,9 +8469,9 @@ void parser___ReduceAction87___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
@@ -8482,8 +8482,8 @@ void parser___ReduceAction87___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef( variable[6] /*tclassidnode2*/,  variable[7] /*ptypenode3*/); /*new AFormaldef*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pformaldefnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label206: while(false);
   tracehead = trace.prev;
   return;
@@ -8510,13 +8510,13 @@ void parser___ReduceAction88___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[6] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*tkwspecialnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwspecialnode2*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
@@ -8527,8 +8527,8 @@ void parser___ReduceAction88___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass( variable[8] /*tkwspecialnode2*/,  variable[9] /*ptypenode3*/); /*new ASuperclass*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*psuperclassnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(10)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(10)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label208: while(false);
   tracehead = trace.prev;
   return;
@@ -8555,16 +8555,16 @@ void parser___ReduceAction89___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction89___action, LOCATE_parser, 4727); nit_exit(1);}
   variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(11)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(11)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label210: while(false);
   tracehead = trace.prev;
   return;
@@ -8591,17 +8591,17 @@ void parser___ReduceAction90___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8628,8 +8628,8 @@ void parser___ReduceAction90___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  variable[14] /*pablenode6*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode10*/,  variable[16] /*tkwattrnode11*/,  variable[17] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label212: while(false);
   tracehead = trace.prev;
   return;
@@ -8656,19 +8656,19 @@ void parser___ReduceAction91___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8698,8 +8698,8 @@ void parser___ReduceAction91___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label214: while(false);
   tracehead = trace.prev;
   return;
@@ -8726,15 +8726,15 @@ void parser___ReduceAction92___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8756,8 +8756,8 @@ void parser___ReduceAction92___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  variable[11] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  variable[13] /*tkwattrnode9*/,  variable[14] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label216: while(false);
   tracehead = trace.prev;
   return;
@@ -8784,19 +8784,19 @@ void parser___ReduceAction93___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8826,8 +8826,8 @@ void parser___ReduceAction93___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label218: while(false);
   tracehead = trace.prev;
   return;
@@ -8854,21 +8854,21 @@ void parser___ReduceAction94___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8901,8 +8901,8 @@ void parser___ReduceAction94___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label220: while(false);
   tracehead = trace.prev;
   return;
@@ -8929,17 +8929,17 @@ void parser___ReduceAction95___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -8964,8 +8964,8 @@ void parser___ReduceAction95___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label222: while(false);
   tracehead = trace.prev;
   return;
@@ -8992,15 +8992,15 @@ void parser___ReduceAction96___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9022,8 +9022,8 @@ void parser___ReduceAction96___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pablenode4*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  variable[13] /*tkwattrnode9*/,  variable[14] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label224: while(false);
   tracehead = trace.prev;
   return;
@@ -9050,17 +9050,17 @@ void parser___ReduceAction97___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9085,8 +9085,8 @@ void parser___ReduceAction97___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label226: while(false);
   tracehead = trace.prev;
   return;
@@ -9113,13 +9113,13 @@ void parser___ReduceAction98___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9136,8 +9136,8 @@ void parser___ReduceAction98___action(val_t  self, val_t  param0) {
   variable[13] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[8] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[9] /*pvisibilitynode6*/,  variable[10] /*tkwattrnode7*/,  variable[11] /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label228: while(false);
   tracehead = trace.prev;
   return;
@@ -9164,19 +9164,19 @@ void parser___ReduceAction99___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9206,8 +9206,8 @@ void parser___ReduceAction99___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  variable[16] /*tkwredefnode9*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  variable[19] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label230: while(false);
   tracehead = trace.prev;
   return;
@@ -9234,21 +9234,21 @@ void parser___ReduceAction100___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9281,8 +9281,8 @@ void parser___ReduceAction100___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label232: while(false);
   tracehead = trace.prev;
   return;
@@ -9309,17 +9309,17 @@ void parser___ReduceAction101___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9344,8 +9344,8 @@ void parser___ReduceAction101___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label234: while(false);
   tracehead = trace.prev;
   return;
@@ -9372,21 +9372,21 @@ void parser___ReduceAction102___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9419,8 +9419,8 @@ void parser___ReduceAction102___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  variable[21] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label236: while(false);
   tracehead = trace.prev;
   return;
@@ -9447,23 +9447,23 @@ void parser___ReduceAction103___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9499,8 +9499,8 @@ void parser___ReduceAction103___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  variable[23] /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label238: while(false);
   tracehead = trace.prev;
   return;
@@ -9527,19 +9527,19 @@ void parser___ReduceAction104___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9567,8 +9567,8 @@ void parser___ReduceAction104___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  variable[18] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label240: while(false);
   tracehead = trace.prev;
   return;
@@ -9595,17 +9595,17 @@ void parser___ReduceAction105___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9630,8 +9630,8 @@ void parser___ReduceAction105___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  variable[16] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label242: while(false);
   tracehead = trace.prev;
   return;
@@ -9658,19 +9658,19 @@ void parser___ReduceAction106___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9698,8 +9698,8 @@ void parser___ReduceAction106___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  variable[18] /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label244: while(false);
   tracehead = trace.prev;
   return;
@@ -9726,15 +9726,15 @@ void parser___ReduceAction107___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9754,8 +9754,8 @@ void parser___ReduceAction107___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*tkwredefnode5*/,  variable[11] /*pvisibilitynode6*/,  variable[12] /*tkwattrnode7*/,  variable[13] /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label246: while(false);
   tracehead = trace.prev;
   return;
@@ -9782,19 +9782,19 @@ void parser___ReduceAction108___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9824,8 +9824,8 @@ void parser___ReduceAction108___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode10*/,  variable[17] /*tkwattrnode11*/,  variable[18] /*tattridnode12*/,  variable[19] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label248: while(false);
   tracehead = trace.prev;
   return;
@@ -9852,21 +9852,21 @@ void parser___ReduceAction109___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9899,8 +9899,8 @@ void parser___ReduceAction109___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label250: while(false);
   tracehead = trace.prev;
   return;
@@ -9927,17 +9927,17 @@ void parser___ReduceAction110___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -9962,8 +9962,8 @@ void parser___ReduceAction110___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  variable[14] /*tkwattrnode9*/,  variable[15] /*tattridnode10*/,  variable[16] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label252: while(false);
   tracehead = trace.prev;
   return;
@@ -9990,21 +9990,21 @@ void parser___ReduceAction111___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10037,8 +10037,8 @@ void parser___ReduceAction111___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label254: while(false);
   tracehead = trace.prev;
   return;
@@ -10065,23 +10065,23 @@ void parser___ReduceAction112___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10117,8 +10117,8 @@ void parser___ReduceAction112___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label256: while(false);
   tracehead = trace.prev;
   return;
@@ -10145,19 +10145,19 @@ void parser___ReduceAction113___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10185,8 +10185,8 @@ void parser___ReduceAction113___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label258: while(false);
   tracehead = trace.prev;
   return;
@@ -10213,17 +10213,17 @@ void parser___ReduceAction114___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10248,8 +10248,8 @@ void parser___ReduceAction114___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  variable[14] /*tkwattrnode9*/,  variable[15] /*tattridnode10*/,  variable[16] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label260: while(false);
   tracehead = trace.prev;
   return;
@@ -10276,19 +10276,19 @@ void parser___ReduceAction115___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10316,8 +10316,8 @@ void parser___ReduceAction115___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label262: while(false);
   tracehead = trace.prev;
   return;
@@ -10344,15 +10344,15 @@ void parser___ReduceAction116___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10372,8 +10372,8 @@ void parser___ReduceAction116___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*pvisibilitynode6*/,  variable[11] /*tkwattrnode7*/,  variable[12] /*tattridnode8*/,  variable[13] /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label264: while(false);
   tracehead = trace.prev;
   return;
@@ -10400,21 +10400,21 @@ void parser___ReduceAction117___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10447,8 +10447,8 @@ void parser___ReduceAction117___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  variable[17] /*tkwredefnode9*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  variable[20] /*tattridnode12*/,  variable[21] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label266: while(false);
   tracehead = trace.prev;
   return;
@@ -10475,23 +10475,23 @@ void parser___ReduceAction118___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10527,8 +10527,8 @@ void parser___ReduceAction118___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label268: while(false);
   tracehead = trace.prev;
   return;
@@ -10555,19 +10555,19 @@ void parser___ReduceAction119___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10595,8 +10595,8 @@ void parser___ReduceAction119___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label270: while(false);
   tracehead = trace.prev;
   return;
@@ -10623,23 +10623,23 @@ void parser___ReduceAction120___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10675,8 +10675,8 @@ void parser___ReduceAction120___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  variable[23] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label272: while(false);
   tracehead = trace.prev;
   return;
@@ -10703,25 +10703,25 @@ void parser___ReduceAction121___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10760,8 +10760,8 @@ void parser___ReduceAction121___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  variable[24] /*tattridnode12*/,  variable[25] /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label274: while(false);
   tracehead = trace.prev;
   return;
@@ -10788,21 +10788,21 @@ void parser___ReduceAction122___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10833,8 +10833,8 @@ void parser___ReduceAction122___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  variable[20] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label276: while(false);
   tracehead = trace.prev;
   return;
@@ -10861,19 +10861,19 @@ void parser___ReduceAction123___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10901,8 +10901,8 @@ void parser___ReduceAction123___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  variable[18] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label278: while(false);
   tracehead = trace.prev;
   return;
@@ -10929,21 +10929,21 @@ void parser___ReduceAction124___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -10974,8 +10974,8 @@ void parser___ReduceAction124___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  variable[20] /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label280: while(false);
   tracehead = trace.prev;
   return;
@@ -11002,17 +11002,17 @@ void parser___ReduceAction125___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11035,8 +11035,8 @@ void parser___ReduceAction125___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[11] /*tkwredefnode5*/,  variable[12] /*pvisibilitynode6*/,  variable[13] /*tkwattrnode7*/,  variable[14] /*tattridnode8*/,  variable[15] /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label282: while(false);
   tracehead = trace.prev;
   return;
@@ -11063,23 +11063,23 @@ void parser___ReduceAction126___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11109,8 +11109,8 @@ void parser___ReduceAction126___action(val_t  self, val_t  param0) {
   variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  variable[20] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[21] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[22] = variable[23];
   variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  variable[23] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label284: while(false);
   tracehead = trace.prev;
   return;
@@ -11137,25 +11137,25 @@ void parser___ReduceAction127___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11188,8 +11188,8 @@ void parser___ReduceAction127___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label286: while(false);
   tracehead = trace.prev;
   return;
@@ -11216,21 +11216,21 @@ void parser___ReduceAction128___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11255,8 +11255,8 @@ void parser___ReduceAction128___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label288: while(false);
   tracehead = trace.prev;
   return;
@@ -11283,25 +11283,25 @@ void parser___ReduceAction129___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11334,8 +11334,8 @@ void parser___ReduceAction129___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label290: while(false);
   tracehead = trace.prev;
   return;
@@ -11362,27 +11362,27 @@ void parser___ReduceAction130___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11418,8 +11418,8 @@ void parser___ReduceAction130___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  NIT_NULL /*null*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label292: while(false);
   tracehead = trace.prev;
   return;
@@ -11446,23 +11446,23 @@ void parser___ReduceAction131___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11490,8 +11490,8 @@ void parser___ReduceAction131___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label294: while(false);
   tracehead = trace.prev;
   return;
@@ -11518,21 +11518,21 @@ void parser___ReduceAction132___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11557,8 +11557,8 @@ void parser___ReduceAction132___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  variable[17] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label296: while(false);
   tracehead = trace.prev;
   return;
@@ -11585,23 +11585,23 @@ void parser___ReduceAction133___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11629,8 +11629,8 @@ void parser___ReduceAction133___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label298: while(false);
   tracehead = trace.prev;
   return;
@@ -11657,19 +11657,19 @@ void parser___ReduceAction134___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11689,8 +11689,8 @@ void parser___ReduceAction134___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode6*/,  variable[13] /*tkwattrnode7*/,  variable[14] /*tattridnode8*/,  NIT_NULL /*null*/,  variable[15] /*pexprnode10*/); /*new AAttrPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label300: while(false);
   tracehead = trace.prev;
   return;
@@ -11717,25 +11717,25 @@ void parser___ReduceAction135___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11768,8 +11768,8 @@ void parser___ReduceAction135___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  variable[22] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label302: while(false);
   tracehead = trace.prev;
   return;
@@ -11796,27 +11796,27 @@ void parser___ReduceAction136___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11852,8 +11852,8 @@ void parser___ReduceAction136___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label304: while(false);
   tracehead = trace.prev;
   return;
@@ -11880,23 +11880,23 @@ void parser___ReduceAction137___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -11924,8 +11924,8 @@ void parser___ReduceAction137___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label306: while(false);
   tracehead = trace.prev;
   return;
@@ -11952,27 +11952,27 @@ void parser___ReduceAction138___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12008,8 +12008,8 @@ void parser___ReduceAction138___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  variable[24] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label308: while(false);
   tracehead = trace.prev;
   return;
@@ -12036,29 +12036,29 @@ void parser___ReduceAction139___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[16] =  variable[15] /*nodearraylist1*/;
   variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12097,8 +12097,8 @@ void parser___ReduceAction139___action(val_t  self, val_t  param0) {
   variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  variable[23] /*tkwredefnode9*/,  variable[24] /*pvisibilitynode10*/,  variable[25] /*tkwattrnode11*/,  variable[26] /*tattridnode12*/,  NIT_NULL /*null*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[28] = variable[29];
   variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label310: while(false);
   tracehead = trace.prev;
   return;
@@ -12125,25 +12125,25 @@ void parser___ReduceAction140___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12174,8 +12174,8 @@ void parser___ReduceAction140___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  variable[20] /*tkwattrnode9*/,  variable[21] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label312: while(false);
   tracehead = trace.prev;
   return;
@@ -12202,23 +12202,23 @@ void parser___ReduceAction141___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12246,8 +12246,8 @@ void parser___ReduceAction141___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  variable[19] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label314: while(false);
   tracehead = trace.prev;
   return;
@@ -12274,25 +12274,25 @@ void parser___ReduceAction142___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12323,8 +12323,8 @@ void parser___ReduceAction142___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  variable[20] /*tkwattrnode9*/,  variable[21] /*tattridnode10*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label316: while(false);
   tracehead = trace.prev;
   return;
@@ -12351,21 +12351,21 @@ void parser___ReduceAction143___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12388,8 +12388,8 @@ void parser___ReduceAction143___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode5*/,  variable[14] /*pvisibilitynode6*/,  variable[15] /*tkwattrnode7*/,  variable[16] /*tattridnode8*/,  NIT_NULL /*null*/,  variable[17] /*pexprnode10*/); /*new AAttrPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label318: while(false);
   tracehead = trace.prev;
   return;
@@ -12416,25 +12416,25 @@ void parser___ReduceAction144___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12467,8 +12467,8 @@ void parser___ReduceAction144___action(val_t  self, val_t  param0) {
   variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  variable[21] /*tattridnode12*/,  variable[22] /*ptypenode13*/,  variable[23] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[24] = variable[25];
   variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  variable[25] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label320: while(false);
   tracehead = trace.prev;
   return;
@@ -12495,27 +12495,27 @@ void parser___ReduceAction145___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12551,8 +12551,8 @@ void parser___ReduceAction145___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label322: while(false);
   tracehead = trace.prev;
   return;
@@ -12579,23 +12579,23 @@ void parser___ReduceAction146___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12623,8 +12623,8 @@ void parser___ReduceAction146___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  variable[18] /*tattridnode10*/,  variable[19] /*ptypenode11*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label324: while(false);
   tracehead = trace.prev;
   return;
@@ -12651,27 +12651,27 @@ void parser___ReduceAction147___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12707,8 +12707,8 @@ void parser___ReduceAction147___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label326: while(false);
   tracehead = trace.prev;
   return;
@@ -12735,29 +12735,29 @@ void parser___ReduceAction148___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[16] =  variable[15] /*nodearraylist1*/;
   variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12796,8 +12796,8 @@ void parser___ReduceAction148___action(val_t  self, val_t  param0) {
   variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  NIT_NULL /*null*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[28] = variable[29];
   variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label328: while(false);
   tracehead = trace.prev;
   return;
@@ -12824,25 +12824,25 @@ void parser___ReduceAction149___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12873,8 +12873,8 @@ void parser___ReduceAction149___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label330: while(false);
   tracehead = trace.prev;
   return;
@@ -12901,23 +12901,23 @@ void parser___ReduceAction150___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -12945,8 +12945,8 @@ void parser___ReduceAction150___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  variable[18] /*tattridnode10*/,  variable[19] /*ptypenode11*/,  variable[20] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label332: while(false);
   tracehead = trace.prev;
   return;
@@ -12973,25 +12973,25 @@ void parser___ReduceAction151___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13022,8 +13022,8 @@ void parser___ReduceAction151___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label334: while(false);
   tracehead = trace.prev;
   return;
@@ -13050,21 +13050,21 @@ void parser___ReduceAction152___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13087,8 +13087,8 @@ void parser___ReduceAction152___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode6*/,  variable[14] /*tkwattrnode7*/,  variable[15] /*tattridnode8*/,  variable[16] /*ptypenode9*/,  variable[17] /*pexprnode10*/); /*new AAttrPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label336: while(false);
   tracehead = trace.prev;
   return;
@@ -13115,27 +13115,27 @@ void parser___ReduceAction153___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13171,8 +13171,8 @@ void parser___ReduceAction153___action(val_t  self, val_t  param0) {
   variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  variable[23] /*tattridnode12*/,  variable[24] /*ptypenode13*/,  variable[25] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[26] = variable[27];
   variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  variable[27] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label338: while(false);
   tracehead = trace.prev;
   return;
@@ -13199,29 +13199,29 @@ void parser___ReduceAction154___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[16] =  variable[15] /*nodearraylist1*/;
   variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13260,8 +13260,8 @@ void parser___ReduceAction154___action(val_t  self, val_t  param0) {
   variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[28] = variable[29];
   variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label340: while(false);
   tracehead = trace.prev;
   return;
@@ -13288,25 +13288,25 @@ void parser___ReduceAction155___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13337,8 +13337,8 @@ void parser___ReduceAction155___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label342: while(false);
   tracehead = trace.prev;
   return;
@@ -13365,29 +13365,29 @@ void parser___ReduceAction156___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
   variable[16] =  variable[15] /*nodearraylist1*/;
   variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13426,8 +13426,8 @@ void parser___ReduceAction156___action(val_t  self, val_t  param0) {
   variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  variable[25] /*tattridnode12*/,  variable[26] /*ptypenode13*/,  variable[27] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[28] = variable[29];
   variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  variable[29] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label344: while(false);
   tracehead = trace.prev;
   return;
@@ -13454,31 +13454,31 @@ void parser___ReduceAction157___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
-  variable[16] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[15] = variable[16];
-  variable[17] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[17] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[16] = variable[17];
   variable[17] =  variable[16] /*nodearraylist1*/;
   variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13520,8 +13520,8 @@ void parser___ReduceAction157___action(val_t  self, val_t  param0) {
   variable[31] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[17] /*pdocnode2*/,  variable[20] /*pablenode3*/,  variable[23] /*pablenode6*/,  variable[24] /*tkwredefnode9*/,  variable[25] /*pvisibilitynode10*/,  variable[26] /*tkwattrnode11*/,  variable[27] /*tattridnode12*/,  variable[28] /*ptypenode13*/,  variable[29] /*pexprnode14*/); /*new AAttrPropdef*/
   variable[30] = variable[31];
   variable[3] =  variable[30] /*ppropdefnode1*/ /*node_list=*/;
-  variable[31] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[31],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[31] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[31],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label346: while(false);
   tracehead = trace.prev;
   return;
@@ -13548,27 +13548,27 @@ void parser___ReduceAction158___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13602,8 +13602,8 @@ void parser___ReduceAction158___action(val_t  self, val_t  param0) {
   variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  NIT_NULL /*null*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  variable[21] /*tkwattrnode9*/,  variable[22] /*tattridnode10*/,  variable[23] /*ptypenode11*/,  variable[24] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label348: while(false);
   tracehead = trace.prev;
   return;
@@ -13630,25 +13630,25 @@ void parser___ReduceAction159___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13679,8 +13679,8 @@ void parser___ReduceAction159___action(val_t  self, val_t  param0) {
   variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  variable[20] /*tattridnode10*/,  variable[21] /*ptypenode11*/,  variable[22] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[23] = variable[24];
   variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  variable[24] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label350: while(false);
   tracehead = trace.prev;
   return;
@@ -13707,27 +13707,27 @@ void parser___ReduceAction160___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13761,8 +13761,8 @@ void parser___ReduceAction160___action(val_t  self, val_t  param0) {
   variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pablenode4*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  variable[21] /*tkwattrnode9*/,  variable[22] /*tattridnode10*/,  variable[23] /*ptypenode11*/,  variable[24] /*pexprnode12*/); /*new AAttrPropdef*/
   variable[25] = variable[26];
   variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  variable[26] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label352: while(false);
   tracehead = trace.prev;
   return;
@@ -13789,23 +13789,23 @@ void parser___ReduceAction161___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13831,8 +13831,8 @@ void parser___ReduceAction161___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode5*/,  variable[15] /*pvisibilitynode6*/,  variable[16] /*tkwattrnode7*/,  variable[17] /*tattridnode8*/,  variable[18] /*ptypenode9*/,  variable[19] /*pexprnode10*/); /*new AAttrPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label354: while(false);
   tracehead = trace.prev;
   return;
@@ -13859,19 +13859,19 @@ void parser___ReduceAction162___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13891,8 +13891,8 @@ void parser___ReduceAction162___action(val_t  self, val_t  param0) {
   variable[17] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label356: while(false);
   tracehead = trace.prev;
   return;
@@ -13919,21 +13919,21 @@ void parser___ReduceAction163___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -13956,8 +13956,8 @@ void parser___ReduceAction163___action(val_t  self, val_t  param0) {
   variable[19] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/); /*new ADeferredMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label358: while(false);
   tracehead = trace.prev;
   return;
@@ -13984,19 +13984,19 @@ void parser___ReduceAction164___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14016,8 +14016,8 @@ void parser___ReduceAction164___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/); /*new AInternMethPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label360: while(false);
   tracehead = trace.prev;
   return;
@@ -14044,21 +14044,21 @@ void parser___ReduceAction165___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14081,8 +14081,8 @@ void parser___ReduceAction165___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/); /*new AInternMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label362: while(false);
   tracehead = trace.prev;
   return;
@@ -14109,19 +14109,19 @@ void parser___ReduceAction166___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14141,8 +14141,8 @@ void parser___ReduceAction166___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label364: while(false);
   tracehead = trace.prev;
   return;
@@ -14169,21 +14169,21 @@ void parser___ReduceAction167___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14206,8 +14206,8 @@ void parser___ReduceAction167___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label366: while(false);
   tracehead = trace.prev;
   return;
@@ -14234,21 +14234,21 @@ void parser___ReduceAction168___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14271,8 +14271,8 @@ void parser___ReduceAction168___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/); /*new AExternMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label368: while(false);
   tracehead = trace.prev;
   return;
@@ -14299,23 +14299,23 @@ void parser___ReduceAction169___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14341,8 +14341,8 @@ void parser___ReduceAction169___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/); /*new AExternMethPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label370: while(false);
   tracehead = trace.prev;
   return;
@@ -14369,19 +14369,19 @@ void parser___ReduceAction170___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14404,8 +14404,8 @@ void parser___ReduceAction170___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label372: while(false);
   tracehead = trace.prev;
   return;
@@ -14432,21 +14432,21 @@ void parser___ReduceAction171___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14472,8 +14472,8 @@ void parser___ReduceAction171___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label374: while(false);
   tracehead = trace.prev;
   return;
@@ -14500,21 +14500,21 @@ void parser___ReduceAction172___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14537,8 +14537,8 @@ void parser___ReduceAction172___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label376: while(false);
   tracehead = trace.prev;
   return;
@@ -14565,23 +14565,23 @@ void parser___ReduceAction173___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14607,8 +14607,8 @@ void parser___ReduceAction173___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label378: while(false);
   tracehead = trace.prev;
   return;
@@ -14635,17 +14635,17 @@ void parser___ReduceAction174___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14665,8 +14665,8 @@ void parser___ReduceAction174___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[13] /*psignaturenode7*/,  variable[14] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label380: while(false);
   tracehead = trace.prev;
   return;
@@ -14693,19 +14693,19 @@ void parser___ReduceAction175___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14728,8 +14728,8 @@ void parser___ReduceAction175___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label382: while(false);
   tracehead = trace.prev;
   return;
@@ -14756,19 +14756,19 @@ void parser___ReduceAction176___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14791,8 +14791,8 @@ void parser___ReduceAction176___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label384: while(false);
   tracehead = trace.prev;
   return;
@@ -14819,21 +14819,21 @@ void parser___ReduceAction177___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14859,8 +14859,8 @@ void parser___ReduceAction177___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label386: while(false);
   tracehead = trace.prev;
   return;
@@ -14887,19 +14887,19 @@ void parser___ReduceAction178___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14919,8 +14919,8 @@ void parser___ReduceAction178___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[14] /*psignaturenode7*/,  variable[15] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label388: while(false);
   tracehead = trace.prev;
   return;
@@ -14947,21 +14947,21 @@ void parser___ReduceAction179___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -14984,8 +14984,8 @@ void parser___ReduceAction179___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label390: while(false);
   tracehead = trace.prev;
   return;
@@ -15012,21 +15012,21 @@ void parser___ReduceAction180___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15049,8 +15049,8 @@ void parser___ReduceAction180___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label392: while(false);
   tracehead = trace.prev;
   return;
@@ -15077,23 +15077,23 @@ void parser___ReduceAction181___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15119,8 +15119,8 @@ void parser___ReduceAction181___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label394: while(false);
   tracehead = trace.prev;
   return;
@@ -15147,15 +15147,15 @@ void parser___ReduceAction182___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15175,8 +15175,8 @@ void parser___ReduceAction182___action(val_t  self, val_t  param0) {
   variable[15] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[10] /*pvisibilitynode4*/,  variable[11] /*tkwtypenode5*/,  variable[12] /*tclassidnode6*/,  variable[13] /*ptypenode7*/); /*new ATypePropdef*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label396: while(false);
   tracehead = trace.prev;
   return;
@@ -15203,17 +15203,17 @@ void parser___ReduceAction183___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15236,8 +15236,8 @@ void parser___ReduceAction183___action(val_t  self, val_t  param0) {
   variable[17] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef( variable[10] /*pdocnode2*/,  variable[11] /*tkwredefnode3*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwtypenode5*/,  variable[14] /*tclassidnode6*/,  variable[15] /*ptypenode7*/); /*new ATypePropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label398: while(false);
   tracehead = trace.prev;
   return;
@@ -15264,16 +15264,16 @@ void parser___ReduceAction184___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9168); nit_exit(1);}
   variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label400: while(false);
   tracehead = trace.prev;
   return;
@@ -15300,19 +15300,19 @@ void parser___ReduceAction185___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15332,8 +15332,8 @@ void parser___ReduceAction185___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label402: while(false);
   tracehead = trace.prev;
   return;
@@ -15360,21 +15360,21 @@ void parser___ReduceAction186___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15397,8 +15397,8 @@ void parser___ReduceAction186___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label404: while(false);
   tracehead = trace.prev;
   return;
@@ -15425,21 +15425,21 @@ void parser___ReduceAction187___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15462,8 +15462,8 @@ void parser___ReduceAction187___action(val_t  self, val_t  param0) {
   variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/); /*new AExternMethPropdef*/
   variable[18] = variable[19];
   variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  variable[19] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label406: while(false);
   tracehead = trace.prev;
   return;
@@ -15490,23 +15490,23 @@ void parser___ReduceAction188___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15532,8 +15532,8 @@ void parser___ReduceAction188___action(val_t  self, val_t  param0) {
   variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/); /*new AExternMethPropdef*/
   variable[20] = variable[21];
   variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  variable[21] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label408: while(false);
   tracehead = trace.prev;
   return;
@@ -15560,19 +15560,19 @@ void parser___ReduceAction189___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15595,8 +15595,8 @@ void parser___ReduceAction189___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label410: while(false);
   tracehead = trace.prev;
   return;
@@ -15623,21 +15623,21 @@ void parser___ReduceAction190___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
@@ -15663,8 +15663,8 @@ void parser___ReduceAction190___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label412: while(false);
   tracehead = trace.prev;
   return;
@@ -15694,8 +15694,8 @@ void parser___ReduceAction191___action(val_t  self, val_t  param0) {
   variable[5] = NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility(); /*new APublicVisibility*/
   variable[4] = variable[5];
   variable[3] =  variable[4] /*pvisibilitynode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label414: while(false);
   tracehead = trace.prev;
   return;
@@ -15722,9 +15722,9 @@ void parser___ReduceAction192___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwprivatenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwprivatenode2*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
@@ -15732,8 +15732,8 @@ void parser___ReduceAction192___action(val_t  self, val_t  param0) {
   variable[8] = NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility( variable[6] /*tkwprivatenode2*/); /*new APrivateVisibility*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label416: while(false);
   tracehead = trace.prev;
   return;
@@ -15760,9 +15760,9 @@ void parser___ReduceAction193___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwprotectednode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwprotectednode2*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
@@ -15770,8 +15770,8 @@ void parser___ReduceAction193___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility( variable[6] /*tkwprotectednode2*/); /*new AProtectedVisibility*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label418: while(false);
   tracehead = trace.prev;
   return;
@@ -15798,9 +15798,9 @@ void parser___ReduceAction194___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwintrudenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwintrudenode2*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
@@ -15808,8 +15808,8 @@ void parser___ReduceAction194___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility( variable[6] /*tkwintrudenode2*/); /*new AIntrudeVisibility*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label420: while(false);
   tracehead = trace.prev;
   return;
@@ -15836,7 +15836,7 @@ void parser___ReduceAction195___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
@@ -15844,8 +15844,8 @@ void parser___ReduceAction195___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid( variable[5] /*tidnode2*/); /*new AIdMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label422: while(false);
   tracehead = trace.prev;
   return;
@@ -15872,7 +15872,7 @@ void parser___ReduceAction196___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tplusnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tplusnode2*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
@@ -15880,8 +15880,8 @@ void parser___ReduceAction196___action(val_t  self, val_t  param0) {
   variable[7] = NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid( variable[5] /*tplusnode2*/); /*new APlusMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label424: while(false);
   tracehead = trace.prev;
   return;
@@ -15908,7 +15908,7 @@ void parser___ReduceAction197___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
@@ -15916,8 +15916,8 @@ void parser___ReduceAction197___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid( variable[5] /*tminusnode2*/); /*new AMinusMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label426: while(false);
   tracehead = trace.prev;
   return;
@@ -15944,7 +15944,7 @@ void parser___ReduceAction198___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstarnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstarnode2*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
@@ -15952,8 +15952,8 @@ void parser___ReduceAction198___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid( variable[5] /*tstarnode2*/); /*new AStarMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label428: while(false);
   tracehead = trace.prev;
   return;
@@ -15980,7 +15980,7 @@ void parser___ReduceAction199___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tslashnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tslashnode2*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
@@ -15988,8 +15988,8 @@ void parser___ReduceAction199___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid( variable[5] /*tslashnode2*/); /*new ASlashMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label430: while(false);
   tracehead = trace.prev;
   return;
@@ -16016,7 +16016,7 @@ void parser___ReduceAction200___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tpercentnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tpercentnode2*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
@@ -16024,8 +16024,8 @@ void parser___ReduceAction200___action(val_t  self, val_t  param0) {
   variable[7] = NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid( variable[5] /*tpercentnode2*/); /*new APercentMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label432: while(false);
   tracehead = trace.prev;
   return;
@@ -16052,7 +16052,7 @@ void parser___ReduceAction201___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*teqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*teqnode2*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
@@ -16060,8 +16060,8 @@ void parser___ReduceAction201___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid( variable[5] /*teqnode2*/); /*new AEqMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label434: while(false);
   tracehead = trace.prev;
   return;
@@ -16088,7 +16088,7 @@ void parser___ReduceAction202___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tnenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnenode2*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
@@ -16096,8 +16096,8 @@ void parser___ReduceAction202___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid( variable[5] /*tnenode2*/); /*new ANeMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label436: while(false);
   tracehead = trace.prev;
   return;
@@ -16124,7 +16124,7 @@ void parser___ReduceAction203___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tlenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tlenode2*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
@@ -16132,8 +16132,8 @@ void parser___ReduceAction203___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid( variable[5] /*tlenode2*/); /*new ALeMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label438: while(false);
   tracehead = trace.prev;
   return;
@@ -16160,7 +16160,7 @@ void parser___ReduceAction204___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tgenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tgenode2*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
@@ -16168,8 +16168,8 @@ void parser___ReduceAction204___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid( variable[5] /*tgenode2*/); /*new AGeMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label440: while(false);
   tracehead = trace.prev;
   return;
@@ -16196,7 +16196,7 @@ void parser___ReduceAction205___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tltnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tltnode2*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
@@ -16204,8 +16204,8 @@ void parser___ReduceAction205___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid( variable[5] /*tltnode2*/); /*new ALtMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label442: while(false);
   tracehead = trace.prev;
   return;
@@ -16232,7 +16232,7 @@ void parser___ReduceAction206___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tgtnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tgtnode2*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
@@ -16240,8 +16240,8 @@ void parser___ReduceAction206___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid( variable[5] /*tgtnode2*/); /*new AGtMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label444: while(false);
   tracehead = trace.prev;
   return;
@@ -16268,9 +16268,9 @@ void parser___ReduceAction207___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tobranode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
@@ -16281,8 +16281,8 @@ void parser___ReduceAction207___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid( variable[6] /*tobranode2*/,  variable[7] /*tcbranode3*/); /*new ABraMethid*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmethidnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label446: while(false);
   tracehead = trace.prev;
   return;
@@ -16309,7 +16309,7 @@ void parser___ReduceAction208___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstarshipnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstarshipnode2*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
@@ -16317,8 +16317,8 @@ void parser___ReduceAction208___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid( variable[5] /*tstarshipnode2*/); /*new AStarshipMethid*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label448: while(false);
   tracehead = trace.prev;
   return;
@@ -16345,9 +16345,9 @@ void parser___ReduceAction209___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
@@ -16358,8 +16358,8 @@ void parser___ReduceAction209___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid( variable[6] /*tidnode2*/,  variable[7] /*tassignnode3*/); /*new AAssignMethid*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pmethidnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label450: while(false);
   tracehead = trace.prev;
   return;
@@ -16386,11 +16386,11 @@ void parser___ReduceAction210___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tobranode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
@@ -16404,8 +16404,8 @@ void parser___ReduceAction210___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid( variable[7] /*tobranode2*/,  variable[8] /*tcbranode3*/,  variable[9] /*tassignnode4*/); /*new ABraassignMethid*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pmethidnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label452: while(false);
   tracehead = trace.prev;
   return;
@@ -16432,7 +16432,7 @@ void parser___ReduceAction211___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -16441,20 +16441,20 @@ void parser___ReduceAction211___action(val_t  self, val_t  param0) {
   variable[7] =  variable[4] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 9753); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[6] =  variable[7] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode5*/); /*new ASignature*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label454: while(false);
   tracehead = trace.prev;
   return;
@@ -16481,9 +16481,9 @@ void parser___ReduceAction212___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -16492,32 +16492,32 @@ void parser___ReduceAction212___action(val_t  self, val_t  param0) {
   variable[8] =  variable[5] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 9781); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 9790); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode6*/); /*new ASignature*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label456: while(false);
   tracehead = trace.prev;
   return;
@@ -16544,9 +16544,9 @@ void parser___ReduceAction213___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -16558,20 +16558,20 @@ void parser___ReduceAction213___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 9820); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode5*/); /*new ASignature*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label458: while(false);
   tracehead = trace.prev;
   return;
@@ -16598,11 +16598,11 @@ void parser___ReduceAction214___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -16611,13 +16611,13 @@ void parser___ReduceAction214___action(val_t  self, val_t  param0) {
   variable[9] =  variable[6] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9849); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode3*/)( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] =  variable[5] /*nodearraylist2*/;
@@ -16626,20 +16626,20 @@ void parser___ReduceAction214___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9860); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode6*/); /*new ASignature*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*psignaturenode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label460: while(false);
   tracehead = trace.prev;
   return;
@@ -16666,7 +16666,7 @@ void parser___ReduceAction215___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -16675,8 +16675,8 @@ void parser___ReduceAction215___action(val_t  self, val_t  param0) {
   variable[8] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode4*/); /*new ASignature*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*psignaturenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label462: while(false);
   tracehead = trace.prev;
   return;
@@ -16703,9 +16703,9 @@ void parser___ReduceAction216___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -16714,20 +16714,20 @@ void parser___ReduceAction216___action(val_t  self, val_t  param0) {
   variable[8] =  variable[5] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 9906); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode5*/); /*new ASignature*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label464: while(false);
   tracehead = trace.prev;
   return;
@@ -16754,9 +16754,9 @@ void parser___ReduceAction217___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -16768,8 +16768,8 @@ void parser___ReduceAction217___action(val_t  self, val_t  param0) {
   variable[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode4*/); /*new ASignature*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label466: while(false);
   tracehead = trace.prev;
   return;
@@ -16796,11 +16796,11 @@ void parser___ReduceAction218___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -16809,13 +16809,13 @@ void parser___ReduceAction218___action(val_t  self, val_t  param0) {
   variable[9] =  variable[6] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 9956); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode3*/)( variable[7] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] =  variable[5] /*nodearraylist2*/;
@@ -16824,8 +16824,8 @@ void parser___ReduceAction218___action(val_t  self, val_t  param0) {
   variable[12] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode5*/); /*new ASignature*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*psignaturenode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label468: while(false);
   tracehead = trace.prev;
   return;
@@ -16859,8 +16859,8 @@ void parser___ReduceAction219___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[4] /*listnode2*/,  NIT_NULL /*null*/,  variable[5] /*listnode4*/); /*new ASignature*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*psignaturenode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label470: while(false);
   tracehead = trace.prev;
   return;
@@ -16887,7 +16887,7 @@ void parser___ReduceAction220___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -16896,20 +16896,20 @@ void parser___ReduceAction220___action(val_t  self, val_t  param0) {
   variable[7] =  variable[4] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 10002); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[5] =  variable[7] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode3*/,  NIT_NULL /*null*/,  variable[6] /*listnode5*/); /*new ASignature*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label472: while(false);
   tracehead = trace.prev;
   return;
@@ -16936,7 +16936,7 @@ void parser___ReduceAction221___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -16948,8 +16948,8 @@ void parser___ReduceAction221___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  variable[7] /*ptypenode3*/,  variable[6] /*listnode4*/); /*new ASignature*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label474: while(false);
   tracehead = trace.prev;
   return;
@@ -16976,9 +16976,9 @@ void parser___ReduceAction222___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -16987,13 +16987,13 @@ void parser___ReduceAction222___action(val_t  self, val_t  param0) {
   variable[8] =  variable[5] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 10050); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] =  variable[4] /*nodearraylist2*/;
@@ -17002,8 +17002,8 @@ void parser___ReduceAction222___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  variable[9] /*ptypenode4*/,  variable[7] /*listnode5*/); /*new ASignature*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label476: while(false);
   tracehead = trace.prev;
   return;
@@ -17030,28 +17030,28 @@ void parser___ReduceAction223___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
   variable[10] =  variable[6] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 10082); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pparamnode1*/)( variable[10] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pparamnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pparamnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label478: while(false);
   tracehead = trace.prev;
   return;
@@ -17078,17 +17078,17 @@ void parser___ReduceAction224___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -17098,22 +17098,22 @@ void parser___ReduceAction224___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist4*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 10106); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pparamnode1*/)( variable[11] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pparamnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pparamnode1*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label480: while(false);
   tracehead = trace.prev;
   return;
@@ -17140,17 +17140,17 @@ void parser___ReduceAction225___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label482: while(false);
   tracehead = trace.prev;
   return;
@@ -17177,18 +17177,18 @@ void parser___ReduceAction226___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist3*/;
   variable[8] = TAG_Bool(( variable[7] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 10145); nit_exit(1);}
   variable[3] =  variable[7] /*pparamnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label484: while(false);
   tracehead = trace.prev;
   return;
@@ -17215,7 +17215,7 @@ void parser___ReduceAction227___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
@@ -17223,8 +17223,8 @@ void parser___ReduceAction227___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AParam_parser_prod___AParam___init_aparam( variable[5] /*tidnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AParam*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pparamnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label486: while(false);
   tracehead = trace.prev;
   return;
@@ -17251,9 +17251,9 @@ void parser___ReduceAction228___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
@@ -17264,8 +17264,8 @@ void parser___ReduceAction228___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AParam_parser_prod___AParam___init_aparam( variable[6] /*tidnode2*/,  variable[7] /*ptypenode3*/,  NIT_NULL /*null*/); /*new AParam*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pparamnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label488: while(false);
   tracehead = trace.prev;
   return;
@@ -17292,11 +17292,11 @@ void parser___ReduceAction229___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
@@ -17310,8 +17310,8 @@ void parser___ReduceAction229___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AParam_parser_prod___AParam___init_aparam( variable[7] /*tidnode2*/,  variable[8] /*ptypenode3*/,  variable[9] /*tdotdotdotnode4*/); /*new AParam*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pparamnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label490: while(false);
   tracehead = trace.prev;
   return;
@@ -17338,27 +17338,27 @@ void parser___ReduceAction230___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist2*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 10223); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode2*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode2*/)( variable[6] /*listnode2*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode2=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode2*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[6] /*listnode2*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label492: while(false);
   tracehead = trace.prev;
   return;
@@ -17385,15 +17385,15 @@ void parser___ReduceAction231___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
@@ -17407,8 +17407,8 @@ void parser___ReduceAction231___action(val_t  self, val_t  param0) {
   variable[13] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[9] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[10] /*tidnode4*/,  variable[11] /*psignaturenode5*/,  NIT_NULL /*null*/); /*new AClosureDecl*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label494: while(false);
   tracehead = trace.prev;
   return;
@@ -17435,17 +17435,17 @@ void parser___ReduceAction232___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
@@ -17462,8 +17462,8 @@ void parser___ReduceAction232___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[10] /*tkwwithnode2*/,  variable[11] /*tkwbreaknode3*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  NIT_NULL /*null*/); /*new AClosureDecl*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label496: while(false);
   tracehead = trace.prev;
   return;
@@ -17490,19 +17490,19 @@ void parser___ReduceAction233___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
@@ -17519,8 +17519,8 @@ void parser___ReduceAction233___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[11] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  variable[14] /*pexprnode6*/); /*new AClosureDecl*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label498: while(false);
   tracehead = trace.prev;
   return;
@@ -17547,21 +17547,21 @@ void parser___ReduceAction234___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
@@ -17581,8 +17581,8 @@ void parser___ReduceAction234___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[12] /*tkwwithnode2*/,  variable[13] /*tkwbreaknode3*/,  variable[14] /*tidnode4*/,  variable[15] /*psignaturenode5*/,  variable[16] /*pexprnode6*/); /*new AClosureDecl*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pclosuredeclnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label500: while(false);
   tracehead = trace.prev;
   return;
@@ -17609,7 +17609,7 @@ void parser___ReduceAction235___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -17619,8 +17619,8 @@ void parser___ReduceAction235___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label502: while(false);
   tracehead = trace.prev;
   return;
@@ -17647,17 +17647,17 @@ void parser___ReduceAction236___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -17667,20 +17667,20 @@ void parser___ReduceAction236___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist4*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 10395); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AType_parser_prod___AType___init_atype( variable[11] /*tclassidnode2*/,  variable[10] /*listnode4*/); /*new AType*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*ptypenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label504: while(false);
   tracehead = trace.prev;
   return;
@@ -17707,20 +17707,20 @@ void parser___ReduceAction237___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 10420); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label506: while(false);
   tracehead = trace.prev;
   return;
@@ -17747,9 +17747,9 @@ void parser___ReduceAction238___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -17759,22 +17759,22 @@ void parser___ReduceAction238___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 10440); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*ptypenode1*/)( variable[7] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*ptypenode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*ptypenode1*/) /*AbstractArray::add*/;
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label508: while(false);
   tracehead = trace.prev;
   return;
@@ -17801,18 +17801,18 @@ void parser___ReduceAction239___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist3*/;
   variable[8] = TAG_Bool(( variable[7] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 10465); nit_exit(1);}
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label510: while(false);
   tracehead = trace.prev;
   return;
@@ -17839,18 +17839,18 @@ void parser___ReduceAction240___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist3*/;
   variable[8] = TAG_Bool(( variable[7] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 10480); nit_exit(1);}
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label512: while(false);
   tracehead = trace.prev;
   return;
@@ -17877,14 +17877,14 @@ void parser___ReduceAction241___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 10493); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label514: while(false);
   tracehead = trace.prev;
   return;
@@ -17911,28 +17911,28 @@ void parser___ReduceAction242___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
   variable[9] =  variable[6] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 10510); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode3*/); /*new ABlockExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label516: while(false);
   tracehead = trace.prev;
   return;
@@ -17959,15 +17959,15 @@ void parser___ReduceAction243___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -17977,24 +17977,24 @@ void parser___ReduceAction243___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 10536); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[9] /*listnode4*/); /*new ABlockExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label518: while(false);
   tracehead = trace.prev;
   return;
@@ -18021,17 +18021,17 @@ void parser___ReduceAction244___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
   variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/); /*new ABlockExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label520: while(false);
   tracehead = trace.prev;
   return;
@@ -18058,15 +18058,15 @@ void parser___ReduceAction245___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/); /*new ABlockExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label522: while(false);
   tracehead = trace.prev;
   return;
@@ -18093,16 +18093,16 @@ void parser___ReduceAction246___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist2*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 10594); nit_exit(1);}
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label524: while(false);
   tracehead = trace.prev;
   return;
@@ -18129,14 +18129,14 @@ void parser___ReduceAction247___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 10607); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label526: while(false);
   tracehead = trace.prev;
   return;
@@ -18163,14 +18163,14 @@ void parser___ReduceAction248___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 10620); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label528: while(false);
   tracehead = trace.prev;
   return;
@@ -18197,7 +18197,7 @@ void parser___ReduceAction249___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
@@ -18205,8 +18205,8 @@ void parser___ReduceAction249___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[5] /*tkwreturnnode2*/,  NIT_NULL /*null*/); /*new AReturnExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label530: while(false);
   tracehead = trace.prev;
   return;
@@ -18233,9 +18233,9 @@ void parser___ReduceAction250___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
@@ -18246,8 +18246,8 @@ void parser___ReduceAction250___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[6] /*tkwreturnnode2*/,  variable[7] /*pexprnode3*/); /*new AReturnExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label532: while(false);
   tracehead = trace.prev;
   return;
@@ -18274,7 +18274,7 @@ void parser___ReduceAction251___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
@@ -18282,8 +18282,8 @@ void parser___ReduceAction251___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[5] /*tkwbreaknode2*/,  NIT_NULL /*null*/); /*new ABreakExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label534: while(false);
   tracehead = trace.prev;
   return;
@@ -18310,9 +18310,9 @@ void parser___ReduceAction252___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
@@ -18323,8 +18323,8 @@ void parser___ReduceAction252___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[6] /*tkwbreaknode2*/,  variable[7] /*pexprnode3*/); /*new ABreakExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label536: while(false);
   tracehead = trace.prev;
   return;
@@ -18351,7 +18351,7 @@ void parser___ReduceAction253___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
@@ -18359,8 +18359,8 @@ void parser___ReduceAction253___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr( variable[5] /*tkwabortnode2*/); /*new AAbortExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label538: while(false);
   tracehead = trace.prev;
   return;
@@ -18387,7 +18387,7 @@ void parser___ReduceAction254___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
@@ -18395,8 +18395,8 @@ void parser___ReduceAction254___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[5] /*tkwcontinuenode2*/,  NIT_NULL /*null*/); /*new AContinueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label540: while(false);
   tracehead = trace.prev;
   return;
@@ -18423,9 +18423,9 @@ void parser___ReduceAction255___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
@@ -18436,8 +18436,8 @@ void parser___ReduceAction255___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[6] /*tkwcontinuenode2*/,  variable[7] /*pexprnode3*/); /*new AContinueExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label542: while(false);
   tracehead = trace.prev;
   return;
@@ -18464,14 +18464,14 @@ void parser___ReduceAction256___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 10760); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label544: while(false);
   tracehead = trace.prev;
   return;
@@ -18498,14 +18498,14 @@ void parser___ReduceAction257___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 10773); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label546: while(false);
   tracehead = trace.prev;
   return;
@@ -18532,14 +18532,14 @@ void parser___ReduceAction258___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10786); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label548: while(false);
   tracehead = trace.prev;
   return;
@@ -18566,14 +18566,14 @@ void parser___ReduceAction259___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 10799); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label550: while(false);
   tracehead = trace.prev;
   return;
@@ -18600,14 +18600,14 @@ void parser___ReduceAction260___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 10812); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label552: while(false);
   tracehead = trace.prev;
   return;
@@ -18634,15 +18634,15 @@ void parser___ReduceAction261___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -18657,20 +18657,20 @@ void parser___ReduceAction261___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist5*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 10835); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/); /*new ACallExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label554: while(false);
   tracehead = trace.prev;
   return;
@@ -18697,9 +18697,9 @@ void parser___ReduceAction262___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -18713,20 +18713,20 @@ void parser___ReduceAction262___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction262___action, LOCATE_parser, 10868); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/); /*new ACallExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label556: while(false);
   tracehead = trace.prev;
   return;
@@ -18753,17 +18753,17 @@ void parser___ReduceAction263___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -18778,32 +18778,32 @@ void parser___ReduceAction263___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10905); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10914); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label558: while(false);
   tracehead = trace.prev;
   return;
@@ -18830,11 +18830,11 @@ void parser___ReduceAction264___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -18848,32 +18848,32 @@ void parser___ReduceAction264___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10948); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10957); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label560: while(false);
   tracehead = trace.prev;
   return;
@@ -18900,9 +18900,9 @@ void parser___ReduceAction265___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -18912,20 +18912,20 @@ void parser___ReduceAction265___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 10987); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label562: while(false);
   tracehead = trace.prev;
   return;
@@ -18952,11 +18952,11 @@ void parser___ReduceAction266___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -18969,20 +18969,20 @@ void parser___ReduceAction266___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction266___action, LOCATE_parser, 11019); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label564: while(false);
   tracehead = trace.prev;
   return;
@@ -19009,15 +19009,15 @@ void parser___ReduceAction267___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -19030,20 +19030,20 @@ void parser___ReduceAction267___action(val_t  self, val_t  param0) {
   variable[12] =  variable[4] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction267___action, LOCATE_parser, 11053); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/); /*new AInitExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label566: while(false);
   tracehead = trace.prev;
   return;
@@ -19070,9 +19070,9 @@ void parser___ReduceAction268___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -19084,20 +19084,20 @@ void parser___ReduceAction268___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction268___action, LOCATE_parser, 11084); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/); /*new AInitExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label568: while(false);
   tracehead = trace.prev;
   return;
@@ -19124,20 +19124,20 @@ void parser___ReduceAction269___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 11110); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label570: while(false);
   tracehead = trace.prev;
   return;
@@ -19164,9 +19164,9 @@ void parser___ReduceAction270___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -19176,22 +19176,22 @@ void parser___ReduceAction270___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction270___action, LOCATE_parser, 11130); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label572: while(false);
   tracehead = trace.prev;
   return;
@@ -19218,11 +19218,11 @@ void parser___ReduceAction271___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -19238,8 +19238,8 @@ void parser___ReduceAction271___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  variable[10] /*pexprnode5*/); /*new AClosureDef*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label574: while(false);
   tracehead = trace.prev;
   return;
@@ -19266,13 +19266,13 @@ void parser___ReduceAction272___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -19282,13 +19282,13 @@ void parser___ReduceAction272___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11185); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -19300,8 +19300,8 @@ void parser___ReduceAction272___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  variable[12] /*pexprnode6*/); /*new AClosureDef*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label576: while(false);
   tracehead = trace.prev;
   return;
@@ -19328,15 +19328,15 @@ void parser___ReduceAction273___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -19351,17 +19351,17 @@ void parser___ReduceAction273___action(val_t  self, val_t  param0) {
   variable[13] =  variable[5] /*nodearraylist4*/;
   variable[14] = TAG_Bool(( variable[13] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 11225); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pexprnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))( variable[13] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pexprnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pexprnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pexprnode6*/)( variable[13] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[12] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[12] /*listnode7*/,  variable[13] /*pexprnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*pexprnode6*/) /*AbstractArray::add*/;
   }
   variable[15] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[12] /*listnode7*/); /*new ABlockExpr*/
   variable[14] = variable[15];
   variable[16] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[10] /*tkwwithnode2*/,  variable[9] /*listnode3*/,  variable[11] /*tkwdonode4*/,  variable[14] /*pexprnode5*/); /*new AClosureDef*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label578: while(false);
   tracehead = trace.prev;
   return;
@@ -19388,17 +19388,17 @@ void parser___ReduceAction274___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -19416,17 +19416,17 @@ void parser___ReduceAction274___action(val_t  self, val_t  param0) {
   variable[15] =  variable[5] /*nodearraylist5*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 11263); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pexprnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*pexprnode6*/,COLOR_kernel___Object_____eqeq))( variable[14] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pexprnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pexprnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pexprnode6*/)( variable[14] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[13] /*listnode8*/,  variable[14] /*pexprnode6*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*pexprnode6*/) /*AbstractArray::add*/;
   }
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[13] /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[13] /*listnode8*/); /*new ABlockExpr*/
@@ -19434,8 +19434,8 @@ void parser___ReduceAction274___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[11] /*tkwwithnode2*/,  variable[10] /*listnode3*/,  variable[12] /*tkwdonode4*/,  variable[16] /*pexprnode5*/); /*new AClosureDef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label580: while(false);
   tracehead = trace.prev;
   return;
@@ -19462,17 +19462,17 @@ void parser___ReduceAction275___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -19482,13 +19482,13 @@ void parser___ReduceAction275___action(val_t  self, val_t  param0) {
   variable[12] =  variable[8] /*nodearraylist2*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 11303); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] =  variable[7] /*nodearraylist3*/;
@@ -19499,17 +19499,17 @@ void parser___ReduceAction275___action(val_t  self, val_t  param0) {
   variable[15] =  variable[5] /*nodearraylist5*/;
   variable[16] = TAG_Bool(( variable[15] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 11315); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pexprnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))( variable[15] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pexprnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pexprnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pexprnode7*/)( variable[15] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[14] /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable[14] /*listnode8*/,  variable[15] /*pexprnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*pexprnode7*/) /*AbstractArray::add*/;
   }
   variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[14] /*listnode8*/); /*new ABlockExpr*/
   variable[16] = variable[17];
   variable[18] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[11] /*tkwwithnode2*/,  variable[10] /*listnode4*/,  variable[13] /*tkwdonode5*/,  variable[16] /*pexprnode6*/); /*new AClosureDef*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label582: while(false);
   tracehead = trace.prev;
   return;
@@ -19536,19 +19536,19 @@ void parser___ReduceAction276___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -19558,13 +19558,13 @@ void parser___ReduceAction276___action(val_t  self, val_t  param0) {
   variable[13] =  variable[9] /*nodearraylist2*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction276___action, LOCATE_parser, 11349); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode4*/)( variable[11] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[11] =  variable[13] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] =  variable[8] /*nodearraylist3*/;
@@ -19578,17 +19578,17 @@ void parser___ReduceAction276___action(val_t  self, val_t  param0) {
   variable[17] =  variable[5] /*nodearraylist6*/;
   variable[18] = TAG_Bool(( variable[17] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction276___action, LOCATE_parser, 11363); nit_exit(1);}
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode7*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pexprnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pexprnode7*/)( variable[16] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[18])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode9*/,  variable[16] /*pexprnode7*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[16] /*pexprnode7*/) /*AbstractArray::add*/;
   }
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[18])) { /*if*/
-    variable[18] = ((array___AbstractArray___is_empty_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
+    variable[18] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[18])) { /*if*/
       variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[15] /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable[19] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode9*/); /*new ABlockExpr*/
@@ -19596,8 +19596,8 @@ void parser___ReduceAction276___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[12] /*tkwwithnode2*/,  variable[11] /*listnode4*/,  variable[14] /*tkwdonode5*/,  variable[18] /*pexprnode6*/); /*new AClosureDef*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label584: while(false);
   tracehead = trace.prev;
   return;
@@ -19624,11 +19624,11 @@ void parser___ReduceAction277___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -19641,8 +19641,8 @@ void parser___ReduceAction277___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  NIT_NULL /*null*/); /*new AClosureDef*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label586: while(false);
   tracehead = trace.prev;
   return;
@@ -19669,13 +19669,13 @@ void parser___ReduceAction278___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -19685,13 +19685,13 @@ void parser___ReduceAction278___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 11425); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -19700,8 +19700,8 @@ void parser___ReduceAction278___action(val_t  self, val_t  param0) {
   variable[13] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  NIT_NULL /*null*/); /*new AClosureDef*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label588: while(false);
   tracehead = trace.prev;
   return;
@@ -19728,9 +19728,9 @@ void parser___ReduceAction279___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -19741,8 +19741,8 @@ void parser___ReduceAction279___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[6] /*tkwvarnode2*/,  variable[7] /*tidnode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label590: while(false);
   tracehead = trace.prev;
   return;
@@ -19769,11 +19769,11 @@ void parser___ReduceAction280___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -19787,8 +19787,8 @@ void parser___ReduceAction280___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[7] /*tkwvarnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*ptypenode4*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label592: while(false);
   tracehead = trace.prev;
   return;
@@ -19815,15 +19815,15 @@ void parser___ReduceAction281___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -19840,8 +19840,8 @@ void parser___ReduceAction281___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[9] /*tkwvarnode2*/,  variable[10] /*tidnode3*/,  NIT_NULL /*null*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/); /*new AVardeclExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label594: while(false);
   tracehead = trace.prev;
   return;
@@ -19868,17 +19868,17 @@ void parser___ReduceAction282___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -19898,8 +19898,8 @@ void parser___ReduceAction282___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[10] /*tkwvarnode2*/,  variable[11] /*tidnode3*/,  variable[12] /*ptypenode4*/,  variable[13] /*tassignnode5*/,  variable[14] /*pexprnode6*/); /*new AVardeclExpr*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label596: while(false);
   tracehead = trace.prev;
   return;
@@ -19926,17 +19926,17 @@ void parser___ReduceAction283___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -19953,8 +19953,8 @@ void parser___ReduceAction283___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*tassignnode4*/,  variable[13] /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label598: while(false);
   tracehead = trace.prev;
   return;
@@ -19981,11 +19981,11 @@ void parser___ReduceAction284___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[7] = variable[8];
@@ -20001,8 +20001,8 @@ void parser___ReduceAction284___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*tassignnode4*/,  variable[10] /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label600: while(false);
   tracehead = trace.prev;
   return;
@@ -20029,19 +20029,19 @@ void parser___ReduceAction285___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -20054,13 +20054,13 @@ void parser___ReduceAction285___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction285___action, LOCATE_parser, 11633); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[5] /*nodearraylist6*/;
@@ -20072,8 +20072,8 @@ void parser___ReduceAction285___action(val_t  self, val_t  param0) {
   variable[18] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*tassignnode6*/,  variable[16] /*pexprnode7*/); /*new ACallAssignExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label602: while(false);
   tracehead = trace.prev;
   return;
@@ -20100,13 +20100,13 @@ void parser___ReduceAction286___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -20118,13 +20118,13 @@ void parser___ReduceAction286___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction286___action, LOCATE_parser, 11672); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[5] /*nodearraylist3*/;
@@ -20136,8 +20136,8 @@ void parser___ReduceAction286___action(val_t  self, val_t  param0) {
   variable[15] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*tassignnode6*/,  variable[13] /*pexprnode7*/); /*new ACallAssignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label604: while(false);
   tracehead = trace.prev;
   return;
@@ -20164,13 +20164,13 @@ void parser___ReduceAction287___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -20180,13 +20180,13 @@ void parser___ReduceAction287___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 11709); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -20198,8 +20198,8 @@ void parser___ReduceAction287___action(val_t  self, val_t  param0) {
   variable[14] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/); /*new ABraAssignExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label606: while(false);
   tracehead = trace.prev;
   return;
@@ -20226,17 +20226,17 @@ void parser___ReduceAction288___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -20253,8 +20253,8 @@ void parser___ReduceAction288___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*passignopnode4*/,  variable[13] /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label608: while(false);
   tracehead = trace.prev;
   return;
@@ -20281,11 +20281,11 @@ void parser___ReduceAction289___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[7] = variable[8];
@@ -20301,8 +20301,8 @@ void parser___ReduceAction289___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*passignopnode4*/,  variable[10] /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label610: while(false);
   tracehead = trace.prev;
   return;
@@ -20329,19 +20329,19 @@ void parser___ReduceAction290___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -20354,13 +20354,13 @@ void parser___ReduceAction290___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction290___action, LOCATE_parser, 11807); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[5] /*nodearraylist6*/;
@@ -20372,8 +20372,8 @@ void parser___ReduceAction290___action(val_t  self, val_t  param0) {
   variable[18] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*passignopnode6*/,  variable[16] /*pexprnode7*/); /*new ACallReassignExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label612: while(false);
   tracehead = trace.prev;
   return;
@@ -20400,13 +20400,13 @@ void parser___ReduceAction291___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -20418,13 +20418,13 @@ void parser___ReduceAction291___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction291___action, LOCATE_parser, 11846); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[5] /*nodearraylist3*/;
@@ -20436,8 +20436,8 @@ void parser___ReduceAction291___action(val_t  self, val_t  param0) {
   variable[15] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*passignopnode6*/,  variable[13] /*pexprnode7*/); /*new ACallReassignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label614: while(false);
   tracehead = trace.prev;
   return;
@@ -20464,13 +20464,13 @@ void parser___ReduceAction292___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -20480,13 +20480,13 @@ void parser___ReduceAction292___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction292___action, LOCATE_parser, 11883); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -20498,8 +20498,8 @@ void parser___ReduceAction292___action(val_t  self, val_t  param0) {
   variable[14] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*passignopnode5*/,  variable[12] /*pexprnode6*/); /*new ABraReassignExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label616: while(false);
   tracehead = trace.prev;
   return;
@@ -20526,7 +20526,7 @@ void parser___ReduceAction293___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tpluseqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tpluseqnode2*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
@@ -20534,8 +20534,8 @@ void parser___ReduceAction293___action(val_t  self, val_t  param0) {
   variable[7] = NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop( variable[5] /*tpluseqnode2*/); /*new APlusAssignOp*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*passignopnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label618: while(false);
   tracehead = trace.prev;
   return;
@@ -20562,7 +20562,7 @@ void parser___ReduceAction294___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tminuseqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tminuseqnode2*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
@@ -20570,8 +20570,8 @@ void parser___ReduceAction294___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop( variable[5] /*tminuseqnode2*/); /*new AMinusAssignOp*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*passignopnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label620: while(false);
   tracehead = trace.prev;
   return;
@@ -20598,9 +20598,9 @@ void parser___ReduceAction295___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
@@ -20611,8 +20611,8 @@ void parser___ReduceAction295___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr( variable[6] /*tkwdonode2*/,  variable[7] /*pexprnode3*/); /*new ADoExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label622: while(false);
   tracehead = trace.prev;
   return;
@@ -20639,21 +20639,21 @@ void parser___ReduceAction296___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20670,8 +20670,8 @@ void parser___ReduceAction296___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[12] /*tkwifnode2*/,  variable[13] /*pexprnode3*/,  variable[14] /*pexprnode4*/,  variable[15] /*pexprnode5*/); /*new AIfExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label624: while(false);
   tracehead = trace.prev;
   return;
@@ -20698,17 +20698,17 @@ void parser___ReduceAction297___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20722,8 +20722,8 @@ void parser___ReduceAction297___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[10] /*tkwifnode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*pexprnode4*/,  NIT_NULL /*null*/); /*new AIfExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label626: while(false);
   tracehead = trace.prev;
   return;
@@ -20750,23 +20750,23 @@ void parser___ReduceAction298___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[12] /*nodearraylist1*/;
   variable[14] = TAG_Bool(( variable[13] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20779,9 +20779,9 @@ void parser___ReduceAction298___action(val_t  self, val_t  param0) {
   variable[16] =  variable[6] /*nodearraylist7*/;
   variable[17] = TAG_Bool(( variable[16] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 12038); nit_exit(1);}
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[16] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable[16] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pexprnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pexprnode5*/)( variable[16] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[17])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[15] /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable[15] /*listnode6*/,  variable[16] /*pexprnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  variable[16] /*pexprnode5*/) /*AbstractArray::add*/;
   }
   variable[18] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode6*/); /*new ABlockExpr*/
   variable[17] = variable[18];
@@ -20791,8 +20791,8 @@ void parser___ReduceAction298___action(val_t  self, val_t  param0) {
   variable[20] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[13] /*tkwifnode2*/,  variable[14] /*pexprnode3*/,  variable[17] /*pexprnode4*/,  variable[18] /*pexprnode7*/); /*new AIfExpr*/
   variable[19] = variable[20];
   variable[3] =  variable[19] /*pexprnode1*/ /*node_list=*/;
-  variable[20] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label628: while(false);
   tracehead = trace.prev;
   return;
@@ -20819,25 +20819,25 @@ void parser___ReduceAction299___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20853,17 +20853,17 @@ void parser___ReduceAction299___action(val_t  self, val_t  param0) {
   variable[18] =  variable[6] /*nodearraylist8*/;
   variable[19] = TAG_Bool(( variable[18] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 12081); nit_exit(1);}
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[17] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[17] /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable[17] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pexprnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pexprnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pexprnode5*/)( variable[17] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable[16] /*listnode7*/,  variable[17] /*pexprnode5*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  variable[17] /*pexprnode5*/) /*AbstractArray::add*/;
   }
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[18] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[18] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*listnode6*/)( variable[18] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[19])) { /*if*/
-    variable[19] = ((array___AbstractArray___is_empty_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[16] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode7*/)( variable[16] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[19])) { /*if*/
       variable[16] =  variable[18] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[16] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[16] /*listnode7*/,  variable[18] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  variable[18] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[20] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[16] /*listnode7*/); /*new ABlockExpr*/
@@ -20874,8 +20874,8 @@ void parser___ReduceAction299___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[14] /*tkwifnode2*/,  variable[15] /*pexprnode3*/,  variable[19] /*pexprnode4*/,  variable[20] /*pexprnode8*/); /*new AIfExpr*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label630: while(false);
   tracehead = trace.prev;
   return;
@@ -20902,17 +20902,17 @@ void parser___ReduceAction300___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20926,8 +20926,8 @@ void parser___ReduceAction300___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[10] /*tkwifnode2*/,  variable[11] /*pexprnode3*/,  NIT_NULL /*null*/,  variable[12] /*pexprnode5*/); /*new AIfExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label632: while(false);
   tracehead = trace.prev;
   return;
@@ -20954,19 +20954,19 @@ void parser___ReduceAction301___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -20980,8 +20980,8 @@ void parser___ReduceAction301___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[11] /*tkwifnode2*/,  variable[12] /*pexprnode3*/,  NIT_NULL /*null*/,  variable[13] /*pexprnode5*/); /*new AIfExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label634: while(false);
   tracehead = trace.prev;
   return;
@@ -21008,16 +21008,16 @@ void parser___ReduceAction302___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist2*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction302___action, LOCATE_parser, 12173); nit_exit(1);}
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label636: while(false);
   tracehead = trace.prev;
   return;
@@ -21044,11 +21044,11 @@ void parser___ReduceAction303___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label638: while(false);
   tracehead = trace.prev;
   return;
@@ -21075,17 +21075,17 @@ void parser___ReduceAction304___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
@@ -21102,8 +21102,8 @@ void parser___ReduceAction304___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr( variable[10] /*tkwwhilenode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*tkwdonode4*/,  variable[13] /*pexprnode5*/); /*new AWhileExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label640: while(false);
   tracehead = trace.prev;
   return;
@@ -21130,13 +21130,13 @@ void parser___ReduceAction305___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -21150,8 +21150,8 @@ void parser___ReduceAction305___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwdonode3*/,  variable[10] /*pexprnode4*/); /*new AForExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label642: while(false);
   tracehead = trace.prev;
   return;
@@ -21178,19 +21178,19 @@ void parser___ReduceAction306___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[11] =  variable[10] /*nodearraylist1*/;
   variable[12] = TAG_Bool(( variable[11] /*tkwfornode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwfornode2*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
@@ -21204,8 +21204,8 @@ void parser___ReduceAction306___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AForVardeclExpr_parser_prod___AForVardeclExpr___init_aforvardeclexpr( variable[11] /*tkwfornode2*/,  variable[12] /*tidnode3*/,  variable[13] /*pexprnode4*/); /*new AForVardeclExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label644: while(false);
   tracehead = trace.prev;
   return;
@@ -21232,9 +21232,9 @@ void parser___ReduceAction307___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
@@ -21245,8 +21245,8 @@ void parser___ReduceAction307___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[6] /*tkwassertnode2*/,  NIT_NULL /*null*/,  variable[7] /*pexprnode4*/); /*new AAssertExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label646: while(false);
   tracehead = trace.prev;
   return;
@@ -21273,11 +21273,11 @@ void parser___ReduceAction308___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
@@ -21291,8 +21291,8 @@ void parser___ReduceAction308___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[7] /*tkwassertnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*pexprnode4*/); /*new AAssertExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label648: while(false);
   tracehead = trace.prev;
   return;
@@ -21319,16 +21319,16 @@ void parser___ReduceAction309___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction309___action, LOCATE_parser, 12326); nit_exit(1);}
   variable[3] =  variable[6] /*tidnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label650: while(false);
   tracehead = trace.prev;
   return;
@@ -21355,14 +21355,14 @@ void parser___ReduceAction310___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction310___action, LOCATE_parser, 12339); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label652: while(false);
   tracehead = trace.prev;
   return;
@@ -21389,17 +21389,17 @@ void parser___ReduceAction311___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -21414,32 +21414,32 @@ void parser___ReduceAction311___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction311___action, LOCATE_parser, 12363); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction311___action, LOCATE_parser, 12372); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label654: while(false);
   tracehead = trace.prev;
   return;
@@ -21466,11 +21466,11 @@ void parser___ReduceAction312___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -21484,32 +21484,32 @@ void parser___ReduceAction312___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction312___action, LOCATE_parser, 12406); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction312___action, LOCATE_parser, 12415); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label656: while(false);
   tracehead = trace.prev;
   return;
@@ -21536,11 +21536,11 @@ void parser___ReduceAction313___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -21552,32 +21552,32 @@ void parser___ReduceAction313___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 12447); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 12456); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[9] /*pexprnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/); /*new ABraExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label658: while(false);
   tracehead = trace.prev;
   return;
@@ -21604,14 +21604,14 @@ void parser___ReduceAction314___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction314___action, LOCATE_parser, 12481); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label660: while(false);
   tracehead = trace.prev;
   return;
@@ -21638,27 +21638,27 @@ void parser___ReduceAction315___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -21681,8 +21681,8 @@ void parser___ReduceAction315___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/); /*new AIfexprExpr*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label662: while(false);
   tracehead = trace.prev;
   return;
@@ -21709,14 +21709,14 @@ void parser___ReduceAction316___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 12535); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label664: while(false);
   tracehead = trace.prev;
   return;
@@ -21743,13 +21743,13 @@ void parser___ReduceAction317___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -21760,8 +21760,8 @@ void parser___ReduceAction317___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AOrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label666: while(false);
   tracehead = trace.prev;
   return;
@@ -21788,13 +21788,13 @@ void parser___ReduceAction318___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -21805,8 +21805,8 @@ void parser___ReduceAction318___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AAndExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label668: while(false);
   tracehead = trace.prev;
   return;
@@ -21833,14 +21833,14 @@ void parser___ReduceAction319___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 12592); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label670: while(false);
   tracehead = trace.prev;
   return;
@@ -21867,11 +21867,11 @@ void parser___ReduceAction320___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
@@ -21882,8 +21882,8 @@ void parser___ReduceAction320___action(val_t  self, val_t  param0) {
   variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/); /*new ANotExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label672: while(false);
   tracehead = trace.prev;
   return;
@@ -21910,14 +21910,14 @@ void parser___ReduceAction321___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 12626); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label674: while(false);
   tracehead = trace.prev;
   return;
@@ -21944,13 +21944,13 @@ void parser___ReduceAction322___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -21961,8 +21961,8 @@ void parser___ReduceAction322___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEqExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label676: while(false);
   tracehead = trace.prev;
   return;
@@ -21989,13 +21989,13 @@ void parser___ReduceAction323___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22006,8 +22006,8 @@ void parser___ReduceAction323___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label678: while(false);
   tracehead = trace.prev;
   return;
@@ -22034,13 +22034,13 @@ void parser___ReduceAction324___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22051,8 +22051,8 @@ void parser___ReduceAction324___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ANeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label680: while(false);
   tracehead = trace.prev;
   return;
@@ -22079,13 +22079,13 @@ void parser___ReduceAction325___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22096,8 +22096,8 @@ void parser___ReduceAction325___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label682: while(false);
   tracehead = trace.prev;
   return;
@@ -22124,13 +22124,13 @@ void parser___ReduceAction326___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22141,8 +22141,8 @@ void parser___ReduceAction326___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label684: while(false);
   tracehead = trace.prev;
   return;
@@ -22169,13 +22169,13 @@ void parser___ReduceAction327___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22186,8 +22186,8 @@ void parser___ReduceAction327___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label686: while(false);
   tracehead = trace.prev;
   return;
@@ -22214,13 +22214,13 @@ void parser___ReduceAction328___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22231,8 +22231,8 @@ void parser___ReduceAction328___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label688: while(false);
   tracehead = trace.prev;
   return;
@@ -22259,13 +22259,13 @@ void parser___ReduceAction329___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22276,8 +22276,8 @@ void parser___ReduceAction329___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarshipExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label690: while(false);
   tracehead = trace.prev;
   return;
@@ -22304,13 +22304,13 @@ void parser___ReduceAction330___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22321,8 +22321,8 @@ void parser___ReduceAction330___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/); /*new AIsaExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label692: while(false);
   tracehead = trace.prev;
   return;
@@ -22349,14 +22349,14 @@ void parser___ReduceAction331___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction331___action, LOCATE_parser, 12837); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label694: while(false);
   tracehead = trace.prev;
   return;
@@ -22383,13 +22383,13 @@ void parser___ReduceAction332___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22400,8 +22400,8 @@ void parser___ReduceAction332___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APlusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label696: while(false);
   tracehead = trace.prev;
   return;
@@ -22428,13 +22428,13 @@ void parser___ReduceAction333___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22445,8 +22445,8 @@ void parser___ReduceAction333___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AMinusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label698: while(false);
   tracehead = trace.prev;
   return;
@@ -22473,14 +22473,14 @@ void parser___ReduceAction334___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction334___action, LOCATE_parser, 12894); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label700: while(false);
   tracehead = trace.prev;
   return;
@@ -22507,13 +22507,13 @@ void parser___ReduceAction335___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22524,8 +22524,8 @@ void parser___ReduceAction335___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label702: while(false);
   tracehead = trace.prev;
   return;
@@ -22552,13 +22552,13 @@ void parser___ReduceAction336___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22569,8 +22569,8 @@ void parser___ReduceAction336___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ASlashExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label704: while(false);
   tracehead = trace.prev;
   return;
@@ -22597,13 +22597,13 @@ void parser___ReduceAction337___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22614,8 +22614,8 @@ void parser___ReduceAction337___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APercentExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label706: while(false);
   tracehead = trace.prev;
   return;
@@ -22642,14 +22642,14 @@ void parser___ReduceAction338___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 12973); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label708: while(false);
   tracehead = trace.prev;
   return;
@@ -22676,11 +22676,11 @@ void parser___ReduceAction339___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
@@ -22691,8 +22691,8 @@ void parser___ReduceAction339___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/); /*new AUminusExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label710: while(false);
   tracehead = trace.prev;
   return;
@@ -22719,11 +22719,11 @@ void parser___ReduceAction340___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
@@ -22734,8 +22734,8 @@ void parser___ReduceAction340___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/); /*new AOnceExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label712: while(false);
   tracehead = trace.prev;
   return;
@@ -22762,14 +22762,14 @@ void parser___ReduceAction341___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 13028); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label714: while(false);
   tracehead = trace.prev;
   return;
@@ -22796,13 +22796,13 @@ void parser___ReduceAction342___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -22815,20 +22815,20 @@ void parser___ReduceAction342___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist4*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 13049); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/); /*new ANewExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label716: while(false);
   tracehead = trace.prev;
   return;
@@ -22855,13 +22855,13 @@ void parser___ReduceAction343___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -22872,8 +22872,8 @@ void parser___ReduceAction343___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/); /*new AAttrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label718: while(false);
   tracehead = trace.prev;
   return;
@@ -22900,7 +22900,7 @@ void parser___ReduceAction344___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[5] = variable[6];
@@ -22910,8 +22910,8 @@ void parser___ReduceAction344___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/); /*new AAttrExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label720: while(false);
   tracehead = trace.prev;
   return;
@@ -22938,15 +22938,15 @@ void parser___ReduceAction345___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -22961,20 +22961,20 @@ void parser___ReduceAction345___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist5*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction345___action, LOCATE_parser, 13126); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/); /*new ACallExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label722: while(false);
   tracehead = trace.prev;
   return;
@@ -23001,9 +23001,9 @@ void parser___ReduceAction346___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -23017,20 +23017,20 @@ void parser___ReduceAction346___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction346___action, LOCATE_parser, 13159); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/); /*new ACallExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label724: while(false);
   tracehead = trace.prev;
   return;
@@ -23057,9 +23057,9 @@ void parser___ReduceAction347___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -23069,20 +23069,20 @@ void parser___ReduceAction347___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 13189); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label726: while(false);
   tracehead = trace.prev;
   return;
@@ -23109,11 +23109,11 @@ void parser___ReduceAction348___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -23126,20 +23126,20 @@ void parser___ReduceAction348___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 13221); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label728: while(false);
   tracehead = trace.prev;
   return;
@@ -23166,15 +23166,15 @@ void parser___ReduceAction349___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -23187,20 +23187,20 @@ void parser___ReduceAction349___action(val_t  self, val_t  param0) {
   variable[12] =  variable[4] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 13255); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/); /*new AInitExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label730: while(false);
   tracehead = trace.prev;
   return;
@@ -23227,9 +23227,9 @@ void parser___ReduceAction350___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -23241,20 +23241,20 @@ void parser___ReduceAction350___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 13286); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/); /*new AInitExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label732: while(false);
   tracehead = trace.prev;
   return;
@@ -23281,9 +23281,9 @@ void parser___ReduceAction351___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -23295,20 +23295,20 @@ void parser___ReduceAction351___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction351___action, LOCATE_parser, 13316); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[8] /*pexprnode2*/,  variable[6] /*listnode4*/,  variable[7] /*listnode5*/); /*new ABraExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label734: while(false);
   tracehead = trace.prev;
   return;
@@ -23335,19 +23335,19 @@ void parser___ReduceAction352___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -23363,20 +23363,20 @@ void parser___ReduceAction352___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist7*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 13354); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/); /*new ANewExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label736: while(false);
   tracehead = trace.prev;
   return;
@@ -23403,23 +23403,23 @@ void parser___ReduceAction353___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[10] /*nodearraylist3*/;
   variable[14] = TAG_Bool(( variable[13] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -23430,8 +23430,8 @@ void parser___ReduceAction353___action(val_t  self, val_t  param0) {
   variable[16] = NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr( variable[13] /*pexprnode2*/,  variable[14] /*pexprnode3*/); /*new ACrangeExpr*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label738: while(false);
   tracehead = trace.prev;
   return;
@@ -23458,23 +23458,23 @@ void parser___ReduceAction354___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
   variable[13] =  variable[10] /*nodearraylist3*/;
   variable[14] = TAG_Bool(( variable[13] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -23485,8 +23485,8 @@ void parser___ReduceAction354___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr( variable[13] /*pexprnode2*/,  variable[14] /*pexprnode3*/); /*new AOrangeExpr*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label740: while(false);
   tracehead = trace.prev;
   return;
@@ -23513,27 +23513,27 @@ void parser___ReduceAction355___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 13435); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[7])) { /*if*/
       variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[8] = NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr( variable[5] /*listnode3*/); /*new AArrayExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label742: while(false);
   tracehead = trace.prev;
   return;
@@ -23560,7 +23560,7 @@ void parser___ReduceAction356___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
@@ -23568,8 +23568,8 @@ void parser___ReduceAction356___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/); /*new ASelfExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label744: while(false);
   tracehead = trace.prev;
   return;
@@ -23596,7 +23596,7 @@ void parser___ReduceAction357___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
@@ -23604,8 +23604,8 @@ void parser___ReduceAction357___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/); /*new ATrueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label746: while(false);
   tracehead = trace.prev;
   return;
@@ -23632,7 +23632,7 @@ void parser___ReduceAction358___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
@@ -23640,8 +23640,8 @@ void parser___ReduceAction358___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label748: while(false);
   tracehead = trace.prev;
   return;
@@ -23668,7 +23668,7 @@ void parser___ReduceAction359___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
@@ -23676,8 +23676,8 @@ void parser___ReduceAction359___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/); /*new ANullExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label750: while(false);
   tracehead = trace.prev;
   return;
@@ -23704,7 +23704,7 @@ void parser___ReduceAction360___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
@@ -23712,8 +23712,8 @@ void parser___ReduceAction360___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/); /*new AIntExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label752: while(false);
   tracehead = trace.prev;
   return;
@@ -23740,7 +23740,7 @@ void parser___ReduceAction361___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
@@ -23748,8 +23748,8 @@ void parser___ReduceAction361___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/); /*new AFloatExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label754: while(false);
   tracehead = trace.prev;
   return;
@@ -23776,7 +23776,7 @@ void parser___ReduceAction362___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
@@ -23784,8 +23784,8 @@ void parser___ReduceAction362___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/); /*new ACharExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label756: while(false);
   tracehead = trace.prev;
   return;
@@ -23812,7 +23812,7 @@ void parser___ReduceAction363___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
@@ -23820,8 +23820,8 @@ void parser___ReduceAction363___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/); /*new AStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label758: while(false);
   tracehead = trace.prev;
   return;
@@ -23848,14 +23848,14 @@ void parser___ReduceAction364___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction364___action, LOCATE_parser, 13586); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label760: while(false);
   tracehead = trace.prev;
   return;
@@ -23882,18 +23882,18 @@ void parser___ReduceAction365___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[5] /*nodearraylist2*/;
   variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction365___action, LOCATE_parser, 13601); nit_exit(1);}
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label762: while(false);
   tracehead = trace.prev;
   return;
@@ -23920,25 +23920,25 @@ void parser___ReduceAction366___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -23952,8 +23952,8 @@ void parser___ReduceAction366___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/); /*new AAsCastExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label764: while(false);
   tracehead = trace.prev;
   return;
@@ -23980,9 +23980,9 @@ void parser___ReduceAction367___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -23992,24 +23992,24 @@ void parser___ReduceAction367___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction367___action, LOCATE_parser, 13649); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode2*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode4*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode3*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode3*/)( variable[8] /*pexprnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode4*/,  variable[8] /*pexprnode3*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*pexprnode3*/) /*AbstractArray::add*/;
   }
   variable[10] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable[6] /*listnode4*/); /*new ASuperstringExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label766: while(false);
   tracehead = trace.prev;
   return;
@@ -24036,11 +24036,11 @@ void parser___ReduceAction368___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -24053,33 +24053,33 @@ void parser___ReduceAction368___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 13682); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[8] /*listnode2*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[9] /*listnode3*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode4*/)( variable[10] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable[7] /*listnode5*/,  variable[10] /*pexprnode4*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*pexprnode4*/) /*AbstractArray::add*/;
   }
   variable[12] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable[7] /*listnode5*/); /*new ASuperstringExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label768: while(false);
   tracehead = trace.prev;
   return;
@@ -24106,13 +24106,13 @@ void parser___ReduceAction369___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -24122,17 +24122,17 @@ void parser___ReduceAction369___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction369___action, LOCATE_parser, 13721); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(56)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(56)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label770: while(false);
   tracehead = trace.prev;
   return;
@@ -24159,7 +24159,7 @@ void parser___ReduceAction370___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstartstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstartstringnode2*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
@@ -24167,8 +24167,8 @@ void parser___ReduceAction370___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr( variable[5] /*tstartstringnode2*/); /*new AStartStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(57)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(57)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label772: while(false);
   tracehead = trace.prev;
   return;
@@ -24195,13 +24195,13 @@ void parser___ReduceAction371___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -24211,17 +24211,17 @@ void parser___ReduceAction371___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 13762); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label774: while(false);
   tracehead = trace.prev;
   return;
@@ -24248,7 +24248,7 @@ void parser___ReduceAction372___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tmidstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tmidstringnode2*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
@@ -24256,8 +24256,8 @@ void parser___ReduceAction372___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr( variable[5] /*tmidstringnode2*/); /*new AMidStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label776: while(false);
   tracehead = trace.prev;
   return;
@@ -24284,7 +24284,7 @@ void parser___ReduceAction373___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tendstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tendstringnode2*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
@@ -24292,8 +24292,8 @@ void parser___ReduceAction373___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr( variable[5] /*tendstringnode2*/); /*new AEndStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label778: while(false);
   tracehead = trace.prev;
   return;
@@ -24320,28 +24320,28 @@ void parser___ReduceAction374___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
   variable[10] =  variable[6] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 13818); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label780: while(false);
   tracehead = trace.prev;
   return;
@@ -24368,17 +24368,17 @@ void parser___ReduceAction375___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -24388,22 +24388,22 @@ void parser___ReduceAction375___action(val_t  self, val_t  param0) {
   variable[12] =  variable[5] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction375___action, LOCATE_parser, 13842); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label782: while(false);
   tracehead = trace.prev;
   return;
@@ -24430,17 +24430,17 @@ void parser___ReduceAction376___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label784: while(false);
   tracehead = trace.prev;
   return;
@@ -24470,8 +24470,8 @@ void parser___ReduceAction377___action(val_t  self, val_t  param0) {
   variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[4] = variable[5];
   variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label786: while(false);
   tracehead = trace.prev;
   return;
@@ -24498,28 +24498,28 @@ void parser___ReduceAction378___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
   variable[10] =  variable[6] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction378___action, LOCATE_parser, 13895); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label788: while(false);
   tracehead = trace.prev;
   return;
@@ -24546,17 +24546,17 @@ void parser___ReduceAction379___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -24566,22 +24566,22 @@ void parser___ReduceAction379___action(val_t  self, val_t  param0) {
   variable[12] =  variable[5] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 13919); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label790: while(false);
   tracehead = trace.prev;
   return;
@@ -24608,20 +24608,20 @@ void parser___ReduceAction380___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction380___action, LOCATE_parser, 13943); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label792: while(false);
   tracehead = trace.prev;
   return;
@@ -24648,17 +24648,17 @@ void parser___ReduceAction381___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label794: while(false);
   tracehead = trace.prev;
   return;
@@ -24688,8 +24688,8 @@ void parser___ReduceAction382___action(val_t  self, val_t  param0) {
   variable[5] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[4] = variable[5];
   variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label796: while(false);
   tracehead = trace.prev;
   return;
@@ -24716,28 +24716,28 @@ void parser___ReduceAction383___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
   variable[10] =  variable[6] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction383___action, LOCATE_parser, 13989); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label798: while(false);
   tracehead = trace.prev;
   return;
@@ -24764,17 +24764,17 @@ void parser___ReduceAction384___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -24784,22 +24784,22 @@ void parser___ReduceAction384___action(val_t  self, val_t  param0) {
   variable[12] =  variable[5] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction384___action, LOCATE_parser, 14013); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label800: while(false);
   tracehead = trace.prev;
   return;
@@ -24826,20 +24826,20 @@ void parser___ReduceAction385___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[5] /*nodearraylist3*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction385___action, LOCATE_parser, 14039); nit_exit(1);}
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label802: while(false);
   tracehead = trace.prev;
   return;
@@ -24866,20 +24866,20 @@ void parser___ReduceAction386___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction386___action, LOCATE_parser, 14053); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label804: while(false);
   tracehead = trace.prev;
   return;
@@ -24906,15 +24906,15 @@ void parser___ReduceAction387___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -24924,22 +24924,22 @@ void parser___ReduceAction387___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist5*/;
   variable[12] = TAG_Bool(( variable[11] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction387___action, LOCATE_parser, 14076); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode1*/)( variable[10] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode3*/)( variable[9] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[10] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode3*/,  variable[10] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  variable[10] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[11] /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable[11] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[11] /*tidnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*tidnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*tidnode2*/)( variable[11] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode3*/,  variable[11] /*tidnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  variable[11] /*tidnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[9] /*listnode3*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label806: while(false);
   tracehead = trace.prev;
   return;
@@ -24966,7 +24966,7 @@ void parser___ReduceAction388___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -24976,8 +24976,8 @@ void parser___ReduceAction388___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[5] /*listnode2*/,  variable[6] /*tclassidnode3*/); /*new AQualified*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pqualifiednode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label808: while(false);
   tracehead = trace.prev;
   return;
@@ -25004,22 +25004,22 @@ void parser___ReduceAction389___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
   variable[7] =  variable[5] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction389___action, LOCATE_parser, 14119); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[8] =  variable[4] /*nodearraylist2*/;
@@ -25028,8 +25028,8 @@ void parser___ReduceAction389___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[6] /*listnode3*/,  variable[8] /*tclassidnode4*/); /*new AQualified*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pqualifiednode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label810: while(false);
   tracehead = trace.prev;
   return;
@@ -25056,27 +25056,27 @@ void parser___ReduceAction390___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction390___action, LOCATE_parser, 14146); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[7])) { /*if*/
       variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[8] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[5] /*listnode3*/,  NIT_NULL /*null*/); /*new AQualified*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pqualifiednode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label812: while(false);
   tracehead = trace.prev;
   return;
@@ -25103,18 +25103,18 @@ void parser___ReduceAction391___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction391___action, LOCATE_parser, 14172); nit_exit(1);}
   variable[3] =  variable[7] /*tidnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label814: while(false);
   tracehead = trace.prev;
   return;
@@ -25141,18 +25141,18 @@ void parser___ReduceAction392___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tclassidnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*tclassidnode1*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction392___action, LOCATE_parser, 14187); nit_exit(1);}
   variable[3] =  variable[7] /*tclassidnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label816: while(false);
   tracehead = trace.prev;
   return;
@@ -25179,10 +25179,10 @@ void parser___ReduceAction393___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label818: while(false);
   tracehead = trace.prev;
   return;
@@ -25209,10 +25209,10 @@ void parser___ReduceAction394___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label820: while(false);
   tracehead = trace.prev;
   return;
@@ -25239,27 +25239,27 @@ void parser___ReduceAction395___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction395___action, LOCATE_parser, 14221); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[7])) { /*if*/
       variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[8] = NEW_ADoc_parser_prod___ADoc___init_adoc( variable[5] /*listnode3*/); /*new ADoc*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pdocnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label822: while(false);
   tracehead = trace.prev;
   return;
@@ -25286,29 +25286,29 @@ void parser___ReduceAction396___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
   variable[7] =  variable[4] /*nodearraylist2*/;
   variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction396___action, LOCATE_parser, 14246); nit_exit(1);}
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
-    variable[8] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[8])) { /*if*/
       variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[9] = NEW_ADoc_parser_prod___ADoc___init_adoc( variable[6] /*listnode3*/); /*new ADoc*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pdocnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label824: while(false);
   tracehead = trace.prev;
   return;
@@ -25335,11 +25335,11 @@ void parser___ReduceAction397___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label826: while(false);
   tracehead = trace.prev;
   return;
@@ -25367,8 +25367,8 @@ void parser___ReduceAction398___action(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
   variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  variable[4] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[4],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[4] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[4],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label828: while(false);
   tracehead = trace.prev;
   return;
@@ -25395,14 +25395,14 @@ void parser___ReduceAction399___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pdocnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pdocnode1*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 14290); nit_exit(1);}
   variable[3] =  variable[5] /*pdocnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label830: while(false);
   tracehead = trace.prev;
   return;
@@ -25429,12 +25429,12 @@ void parser___ReduceAction400___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label832: while(false);
   tracehead = trace.prev;
   return;
@@ -25461,14 +25461,14 @@ void parser___ReduceAction401___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label834: while(false);
   tracehead = trace.prev;
   return;
@@ -25495,10 +25495,10 @@ void parser___ReduceAction402___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label836: while(false);
   tracehead = trace.prev;
   return;
@@ -25525,7 +25525,7 @@ void parser___ReduceAction403___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -25535,8 +25535,8 @@ void parser___ReduceAction403___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label838: while(false);
   tracehead = trace.prev;
   return;
@@ -25563,14 +25563,14 @@ void parser___ReduceAction404___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction404___action, LOCATE_parser, 14354); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label840: while(false);
   tracehead = trace.prev;
   return;
@@ -25597,17 +25597,17 @@ void parser___ReduceAction405___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -25622,32 +25622,32 @@ void parser___ReduceAction405___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 14378); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 14387); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label842: while(false);
   tracehead = trace.prev;
   return;
@@ -25674,11 +25674,11 @@ void parser___ReduceAction406___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -25692,32 +25692,32 @@ void parser___ReduceAction406___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 14421); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 14430); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label844: while(false);
   tracehead = trace.prev;
   return;
@@ -25744,14 +25744,14 @@ void parser___ReduceAction407___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction407___action, LOCATE_parser, 14456); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label846: while(false);
   tracehead = trace.prev;
   return;
@@ -25778,27 +25778,27 @@ void parser___ReduceAction408___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -25821,8 +25821,8 @@ void parser___ReduceAction408___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/); /*new AIfexprExpr*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label848: while(false);
   tracehead = trace.prev;
   return;
@@ -25849,14 +25849,14 @@ void parser___ReduceAction409___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction409___action, LOCATE_parser, 14510); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label850: while(false);
   tracehead = trace.prev;
   return;
@@ -25883,13 +25883,13 @@ void parser___ReduceAction410___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -25900,8 +25900,8 @@ void parser___ReduceAction410___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AOrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label852: while(false);
   tracehead = trace.prev;
   return;
@@ -25928,13 +25928,13 @@ void parser___ReduceAction411___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -25945,8 +25945,8 @@ void parser___ReduceAction411___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AAndExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label854: while(false);
   tracehead = trace.prev;
   return;
@@ -25973,14 +25973,14 @@ void parser___ReduceAction412___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction412___action, LOCATE_parser, 14567); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label856: while(false);
   tracehead = trace.prev;
   return;
@@ -26007,11 +26007,11 @@ void parser___ReduceAction413___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
@@ -26022,8 +26022,8 @@ void parser___ReduceAction413___action(val_t  self, val_t  param0) {
   variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/); /*new ANotExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label858: while(false);
   tracehead = trace.prev;
   return;
@@ -26050,14 +26050,14 @@ void parser___ReduceAction414___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction414___action, LOCATE_parser, 14601); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label860: while(false);
   tracehead = trace.prev;
   return;
@@ -26084,13 +26084,13 @@ void parser___ReduceAction415___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26101,8 +26101,8 @@ void parser___ReduceAction415___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEqExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label862: while(false);
   tracehead = trace.prev;
   return;
@@ -26129,13 +26129,13 @@ void parser___ReduceAction416___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26146,8 +26146,8 @@ void parser___ReduceAction416___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label864: while(false);
   tracehead = trace.prev;
   return;
@@ -26174,13 +26174,13 @@ void parser___ReduceAction417___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26191,8 +26191,8 @@ void parser___ReduceAction417___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ANeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label866: while(false);
   tracehead = trace.prev;
   return;
@@ -26219,13 +26219,13 @@ void parser___ReduceAction418___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26236,8 +26236,8 @@ void parser___ReduceAction418___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label868: while(false);
   tracehead = trace.prev;
   return;
@@ -26264,13 +26264,13 @@ void parser___ReduceAction419___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26281,8 +26281,8 @@ void parser___ReduceAction419___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label870: while(false);
   tracehead = trace.prev;
   return;
@@ -26309,13 +26309,13 @@ void parser___ReduceAction420___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26326,8 +26326,8 @@ void parser___ReduceAction420___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label872: while(false);
   tracehead = trace.prev;
   return;
@@ -26354,13 +26354,13 @@ void parser___ReduceAction421___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26371,8 +26371,8 @@ void parser___ReduceAction421___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label874: while(false);
   tracehead = trace.prev;
   return;
@@ -26399,13 +26399,13 @@ void parser___ReduceAction422___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26416,8 +26416,8 @@ void parser___ReduceAction422___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarshipExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label876: while(false);
   tracehead = trace.prev;
   return;
@@ -26444,13 +26444,13 @@ void parser___ReduceAction423___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26461,8 +26461,8 @@ void parser___ReduceAction423___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/); /*new AIsaExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label878: while(false);
   tracehead = trace.prev;
   return;
@@ -26489,14 +26489,14 @@ void parser___ReduceAction424___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction424___action, LOCATE_parser, 14812); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label880: while(false);
   tracehead = trace.prev;
   return;
@@ -26523,13 +26523,13 @@ void parser___ReduceAction425___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26540,8 +26540,8 @@ void parser___ReduceAction425___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APlusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label882: while(false);
   tracehead = trace.prev;
   return;
@@ -26568,13 +26568,13 @@ void parser___ReduceAction426___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26585,8 +26585,8 @@ void parser___ReduceAction426___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AMinusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label884: while(false);
   tracehead = trace.prev;
   return;
@@ -26613,14 +26613,14 @@ void parser___ReduceAction427___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction427___action, LOCATE_parser, 14869); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label886: while(false);
   tracehead = trace.prev;
   return;
@@ -26647,13 +26647,13 @@ void parser___ReduceAction428___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26664,8 +26664,8 @@ void parser___ReduceAction428___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label888: while(false);
   tracehead = trace.prev;
   return;
@@ -26692,13 +26692,13 @@ void parser___ReduceAction429___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26709,8 +26709,8 @@ void parser___ReduceAction429___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ASlashExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label890: while(false);
   tracehead = trace.prev;
   return;
@@ -26737,13 +26737,13 @@ void parser___ReduceAction430___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -26754,8 +26754,8 @@ void parser___ReduceAction430___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APercentExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label892: while(false);
   tracehead = trace.prev;
   return;
@@ -26782,14 +26782,14 @@ void parser___ReduceAction431___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction431___action, LOCATE_parser, 14948); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label894: while(false);
   tracehead = trace.prev;
   return;
@@ -26816,11 +26816,11 @@ void parser___ReduceAction432___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
@@ -26831,8 +26831,8 @@ void parser___ReduceAction432___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/); /*new AUminusExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label896: while(false);
   tracehead = trace.prev;
   return;
@@ -26859,11 +26859,11 @@ void parser___ReduceAction433___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
@@ -26874,8 +26874,8 @@ void parser___ReduceAction433___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/); /*new AOnceExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label898: while(false);
   tracehead = trace.prev;
   return;
@@ -26902,14 +26902,14 @@ void parser___ReduceAction434___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction434___action, LOCATE_parser, 15003); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label900: while(false);
   tracehead = trace.prev;
   return;
@@ -26936,13 +26936,13 @@ void parser___ReduceAction435___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -26955,20 +26955,20 @@ void parser___ReduceAction435___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist4*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 15024); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/); /*new ANewExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label902: while(false);
   tracehead = trace.prev;
   return;
@@ -26995,13 +26995,13 @@ void parser___ReduceAction436___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -27012,8 +27012,8 @@ void parser___ReduceAction436___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/); /*new AAttrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label904: while(false);
   tracehead = trace.prev;
   return;
@@ -27040,7 +27040,7 @@ void parser___ReduceAction437___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[5] = variable[6];
@@ -27050,8 +27050,8 @@ void parser___ReduceAction437___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/); /*new AAttrExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label906: while(false);
   tracehead = trace.prev;
   return;
@@ -27078,15 +27078,15 @@ void parser___ReduceAction438___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -27101,20 +27101,20 @@ void parser___ReduceAction438___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist5*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction438___action, LOCATE_parser, 15101); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/); /*new ACallExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label908: while(false);
   tracehead = trace.prev;
   return;
@@ -27141,9 +27141,9 @@ void parser___ReduceAction439___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -27157,20 +27157,20 @@ void parser___ReduceAction439___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction439___action, LOCATE_parser, 15134); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/); /*new ACallExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label910: while(false);
   tracehead = trace.prev;
   return;
@@ -27197,9 +27197,9 @@ void parser___ReduceAction440___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -27209,20 +27209,20 @@ void parser___ReduceAction440___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 15164); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label912: while(false);
   tracehead = trace.prev;
   return;
@@ -27249,11 +27249,11 @@ void parser___ReduceAction441___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -27266,20 +27266,20 @@ void parser___ReduceAction441___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction441___action, LOCATE_parser, 15196); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label914: while(false);
   tracehead = trace.prev;
   return;
@@ -27306,15 +27306,15 @@ void parser___ReduceAction442___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -27327,20 +27327,20 @@ void parser___ReduceAction442___action(val_t  self, val_t  param0) {
   variable[12] =  variable[4] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction442___action, LOCATE_parser, 15230); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/); /*new AInitExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label916: while(false);
   tracehead = trace.prev;
   return;
@@ -27367,9 +27367,9 @@ void parser___ReduceAction443___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -27381,20 +27381,20 @@ void parser___ReduceAction443___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction443___action, LOCATE_parser, 15261); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/); /*new AInitExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label918: while(false);
   tracehead = trace.prev;
   return;
@@ -27421,19 +27421,19 @@ void parser___ReduceAction444___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -27449,20 +27449,20 @@ void parser___ReduceAction444___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist7*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 15299); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/); /*new ANewExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label920: while(false);
   tracehead = trace.prev;
   return;
@@ -27489,7 +27489,7 @@ void parser___ReduceAction445___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
@@ -27497,8 +27497,8 @@ void parser___ReduceAction445___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/); /*new ASelfExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label922: while(false);
   tracehead = trace.prev;
   return;
@@ -27525,7 +27525,7 @@ void parser___ReduceAction446___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
@@ -27533,8 +27533,8 @@ void parser___ReduceAction446___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/); /*new ATrueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label924: while(false);
   tracehead = trace.prev;
   return;
@@ -27561,7 +27561,7 @@ void parser___ReduceAction447___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
@@ -27569,8 +27569,8 @@ void parser___ReduceAction447___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label926: while(false);
   tracehead = trace.prev;
   return;
@@ -27597,7 +27597,7 @@ void parser___ReduceAction448___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
@@ -27605,8 +27605,8 @@ void parser___ReduceAction448___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/); /*new ANullExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label928: while(false);
   tracehead = trace.prev;
   return;
@@ -27633,7 +27633,7 @@ void parser___ReduceAction449___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
@@ -27641,8 +27641,8 @@ void parser___ReduceAction449___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/); /*new AIntExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label930: while(false);
   tracehead = trace.prev;
   return;
@@ -27669,7 +27669,7 @@ void parser___ReduceAction450___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
@@ -27677,8 +27677,8 @@ void parser___ReduceAction450___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/); /*new AFloatExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label932: while(false);
   tracehead = trace.prev;
   return;
@@ -27705,7 +27705,7 @@ void parser___ReduceAction451___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
@@ -27713,8 +27713,8 @@ void parser___ReduceAction451___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/); /*new ACharExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label934: while(false);
   tracehead = trace.prev;
   return;
@@ -27741,7 +27741,7 @@ void parser___ReduceAction452___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
@@ -27749,8 +27749,8 @@ void parser___ReduceAction452___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/); /*new AStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label936: while(false);
   tracehead = trace.prev;
   return;
@@ -27777,14 +27777,14 @@ void parser___ReduceAction453___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction453___action, LOCATE_parser, 15453); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label938: while(false);
   tracehead = trace.prev;
   return;
@@ -27811,18 +27811,18 @@ void parser___ReduceAction454___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[5] /*nodearraylist2*/;
   variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction454___action, LOCATE_parser, 15468); nit_exit(1);}
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label940: while(false);
   tracehead = trace.prev;
   return;
@@ -27849,25 +27849,25 @@ void parser___ReduceAction455___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -27881,8 +27881,8 @@ void parser___ReduceAction455___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/); /*new AAsCastExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label942: while(false);
   tracehead = trace.prev;
   return;
@@ -27909,14 +27909,14 @@ void parser___ReduceAction456___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction456___action, LOCATE_parser, 15512); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label944: while(false);
   tracehead = trace.prev;
   return;
@@ -27943,28 +27943,28 @@ void parser___ReduceAction457___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
   variable[9] =  variable[6] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction457___action, LOCATE_parser, 15529); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[8] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[11] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode3*/); /*new ABlockExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label946: while(false);
   tracehead = trace.prev;
   return;
@@ -27991,15 +27991,15 @@ void parser___ReduceAction458___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -28009,24 +28009,24 @@ void parser___ReduceAction458___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction458___action, LOCATE_parser, 15555); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
   }
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[9] /*listnode4*/); /*new ABlockExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label948: while(false);
   tracehead = trace.prev;
   return;
@@ -28053,17 +28053,17 @@ void parser___ReduceAction459___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
   variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/); /*new ABlockExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label950: while(false);
   tracehead = trace.prev;
   return;
@@ -28090,15 +28090,15 @@ void parser___ReduceAction460___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/); /*new ABlockExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label952: while(false);
   tracehead = trace.prev;
   return;
@@ -28125,14 +28125,14 @@ void parser___ReduceAction461___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction461___action, LOCATE_parser, 15612); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label954: while(false);
   tracehead = trace.prev;
   return;
@@ -28159,14 +28159,14 @@ void parser___ReduceAction462___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction462___action, LOCATE_parser, 15625); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label956: while(false);
   tracehead = trace.prev;
   return;
@@ -28193,7 +28193,7 @@ void parser___ReduceAction463___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
@@ -28201,8 +28201,8 @@ void parser___ReduceAction463___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[5] /*tkwreturnnode2*/,  NIT_NULL /*null*/); /*new AReturnExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label958: while(false);
   tracehead = trace.prev;
   return;
@@ -28229,9 +28229,9 @@ void parser___ReduceAction464___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
@@ -28242,8 +28242,8 @@ void parser___ReduceAction464___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[6] /*tkwreturnnode2*/,  variable[7] /*pexprnode3*/); /*new AReturnExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label960: while(false);
   tracehead = trace.prev;
   return;
@@ -28270,7 +28270,7 @@ void parser___ReduceAction465___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
@@ -28278,8 +28278,8 @@ void parser___ReduceAction465___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[5] /*tkwbreaknode2*/,  NIT_NULL /*null*/); /*new ABreakExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label962: while(false);
   tracehead = trace.prev;
   return;
@@ -28306,9 +28306,9 @@ void parser___ReduceAction466___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
@@ -28319,8 +28319,8 @@ void parser___ReduceAction466___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[6] /*tkwbreaknode2*/,  variable[7] /*pexprnode3*/); /*new ABreakExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label964: while(false);
   tracehead = trace.prev;
   return;
@@ -28347,7 +28347,7 @@ void parser___ReduceAction467___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
@@ -28355,8 +28355,8 @@ void parser___ReduceAction467___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr( variable[5] /*tkwabortnode2*/); /*new AAbortExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label966: while(false);
   tracehead = trace.prev;
   return;
@@ -28383,7 +28383,7 @@ void parser___ReduceAction468___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
@@ -28391,8 +28391,8 @@ void parser___ReduceAction468___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[5] /*tkwcontinuenode2*/,  NIT_NULL /*null*/); /*new AContinueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label968: while(false);
   tracehead = trace.prev;
   return;
@@ -28419,9 +28419,9 @@ void parser___ReduceAction469___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
@@ -28432,8 +28432,8 @@ void parser___ReduceAction469___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[6] /*tkwcontinuenode2*/,  variable[7] /*pexprnode3*/); /*new AContinueExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label970: while(false);
   tracehead = trace.prev;
   return;
@@ -28460,14 +28460,14 @@ void parser___ReduceAction470___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction470___action, LOCATE_parser, 15765); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label972: while(false);
   tracehead = trace.prev;
   return;
@@ -28494,14 +28494,14 @@ void parser___ReduceAction471___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction471___action, LOCATE_parser, 15778); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label974: while(false);
   tracehead = trace.prev;
   return;
@@ -28528,14 +28528,14 @@ void parser___ReduceAction472___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction472___action, LOCATE_parser, 15791); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label976: while(false);
   tracehead = trace.prev;
   return;
@@ -28562,14 +28562,14 @@ void parser___ReduceAction473___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 15804); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label978: while(false);
   tracehead = trace.prev;
   return;
@@ -28596,14 +28596,14 @@ void parser___ReduceAction474___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 15817); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label980: while(false);
   tracehead = trace.prev;
   return;
@@ -28630,15 +28630,15 @@ void parser___ReduceAction475___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -28653,20 +28653,20 @@ void parser___ReduceAction475___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist5*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 15840); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/); /*new ACallExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label982: while(false);
   tracehead = trace.prev;
   return;
@@ -28693,9 +28693,9 @@ void parser___ReduceAction476___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -28709,20 +28709,20 @@ void parser___ReduceAction476___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 15873); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/); /*new ACallExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label984: while(false);
   tracehead = trace.prev;
   return;
@@ -28749,17 +28749,17 @@ void parser___ReduceAction477___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -28774,32 +28774,32 @@ void parser___ReduceAction477___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 15910); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 15919); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label986: while(false);
   tracehead = trace.prev;
   return;
@@ -28826,11 +28826,11 @@ void parser___ReduceAction478___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -28844,32 +28844,32 @@ void parser___ReduceAction478___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 15953); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 15962); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label988: while(false);
   tracehead = trace.prev;
   return;
@@ -28896,9 +28896,9 @@ void parser___ReduceAction479___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -28908,20 +28908,20 @@ void parser___ReduceAction479___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 15992); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label990: while(false);
   tracehead = trace.prev;
   return;
@@ -28948,11 +28948,11 @@ void parser___ReduceAction480___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -28965,20 +28965,20 @@ void parser___ReduceAction480___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 16024); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label992: while(false);
   tracehead = trace.prev;
   return;
@@ -29005,15 +29005,15 @@ void parser___ReduceAction481___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -29026,20 +29026,20 @@ void parser___ReduceAction481___action(val_t  self, val_t  param0) {
   variable[12] =  variable[4] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction481___action, LOCATE_parser, 16058); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/); /*new AInitExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label994: while(false);
   tracehead = trace.prev;
   return;
@@ -29066,9 +29066,9 @@ void parser___ReduceAction482___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -29080,20 +29080,20 @@ void parser___ReduceAction482___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction482___action, LOCATE_parser, 16089); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/); /*new AInitExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label996: while(false);
   tracehead = trace.prev;
   return;
@@ -29120,20 +29120,20 @@ void parser___ReduceAction483___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction483___action, LOCATE_parser, 16115); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label998: while(false);
   tracehead = trace.prev;
   return;
@@ -29160,9 +29160,9 @@ void parser___ReduceAction484___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -29172,22 +29172,22 @@ void parser___ReduceAction484___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 16135); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*pclosuredefnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1000: while(false);
   tracehead = trace.prev;
   return;
@@ -29214,11 +29214,11 @@ void parser___ReduceAction485___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -29234,8 +29234,8 @@ void parser___ReduceAction485___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  variable[10] /*pexprnode5*/); /*new AClosureDef*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1002: while(false);
   tracehead = trace.prev;
   return;
@@ -29262,13 +29262,13 @@ void parser___ReduceAction486___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -29278,13 +29278,13 @@ void parser___ReduceAction486___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 16190); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -29296,8 +29296,8 @@ void parser___ReduceAction486___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  variable[12] /*pexprnode6*/); /*new AClosureDef*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pclosuredefnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1004: while(false);
   tracehead = trace.prev;
   return;
@@ -29324,9 +29324,9 @@ void parser___ReduceAction487___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -29337,8 +29337,8 @@ void parser___ReduceAction487___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[6] /*tkwvarnode2*/,  variable[7] /*tidnode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1006: while(false);
   tracehead = trace.prev;
   return;
@@ -29365,11 +29365,11 @@ void parser___ReduceAction488___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -29383,8 +29383,8 @@ void parser___ReduceAction488___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[7] /*tkwvarnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*ptypenode4*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1008: while(false);
   tracehead = trace.prev;
   return;
@@ -29411,15 +29411,15 @@ void parser___ReduceAction489___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[9] =  variable[8] /*nodearraylist1*/;
   variable[10] = TAG_Bool(( variable[9] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -29436,8 +29436,8 @@ void parser___ReduceAction489___action(val_t  self, val_t  param0) {
   variable[14] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[9] /*tkwvarnode2*/,  variable[10] /*tidnode3*/,  NIT_NULL /*null*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/); /*new AVardeclExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1010: while(false);
   tracehead = trace.prev;
   return;
@@ -29464,17 +29464,17 @@ void parser___ReduceAction490___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
@@ -29494,8 +29494,8 @@ void parser___ReduceAction490___action(val_t  self, val_t  param0) {
   variable[16] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[10] /*tkwvarnode2*/,  variable[11] /*tidnode3*/,  variable[12] /*ptypenode4*/,  variable[13] /*tassignnode5*/,  variable[14] /*pexprnode6*/); /*new AVardeclExpr*/
   variable[15] = variable[16];
   variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  variable[16] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1012: while(false);
   tracehead = trace.prev;
   return;
@@ -29522,17 +29522,17 @@ void parser___ReduceAction491___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -29549,8 +29549,8 @@ void parser___ReduceAction491___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*tassignnode4*/,  variable[13] /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1014: while(false);
   tracehead = trace.prev;
   return;
@@ -29577,11 +29577,11 @@ void parser___ReduceAction492___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[7] = variable[8];
@@ -29597,8 +29597,8 @@ void parser___ReduceAction492___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*tassignnode4*/,  variable[10] /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1016: while(false);
   tracehead = trace.prev;
   return;
@@ -29625,19 +29625,19 @@ void parser___ReduceAction493___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -29650,13 +29650,13 @@ void parser___ReduceAction493___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction493___action, LOCATE_parser, 16400); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[5] /*nodearraylist6*/;
@@ -29668,8 +29668,8 @@ void parser___ReduceAction493___action(val_t  self, val_t  param0) {
   variable[18] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*tassignnode6*/,  variable[16] /*pexprnode7*/); /*new ACallAssignExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1018: while(false);
   tracehead = trace.prev;
   return;
@@ -29696,13 +29696,13 @@ void parser___ReduceAction494___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -29714,13 +29714,13 @@ void parser___ReduceAction494___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction494___action, LOCATE_parser, 16439); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[5] /*nodearraylist3*/;
@@ -29732,8 +29732,8 @@ void parser___ReduceAction494___action(val_t  self, val_t  param0) {
   variable[15] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*tassignnode6*/,  variable[13] /*pexprnode7*/); /*new ACallAssignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1020: while(false);
   tracehead = trace.prev;
   return;
@@ -29760,13 +29760,13 @@ void parser___ReduceAction495___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -29776,13 +29776,13 @@ void parser___ReduceAction495___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction495___action, LOCATE_parser, 16476); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -29794,8 +29794,8 @@ void parser___ReduceAction495___action(val_t  self, val_t  param0) {
   variable[14] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/); /*new ABraAssignExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1022: while(false);
   tracehead = trace.prev;
   return;
@@ -29822,17 +29822,17 @@ void parser___ReduceAction496___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -29849,8 +29849,8 @@ void parser___ReduceAction496___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*passignopnode4*/,  variable[13] /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1024: while(false);
   tracehead = trace.prev;
   return;
@@ -29877,11 +29877,11 @@ void parser___ReduceAction497___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[7] = variable[8];
@@ -29897,8 +29897,8 @@ void parser___ReduceAction497___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*passignopnode4*/,  variable[10] /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1026: while(false);
   tracehead = trace.prev;
   return;
@@ -29925,19 +29925,19 @@ void parser___ReduceAction498___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -29950,13 +29950,13 @@ void parser___ReduceAction498___action(val_t  self, val_t  param0) {
   variable[14] =  variable[6] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction498___action, LOCATE_parser, 16574); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[5] /*nodearraylist6*/;
@@ -29968,8 +29968,8 @@ void parser___ReduceAction498___action(val_t  self, val_t  param0) {
   variable[18] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*passignopnode6*/,  variable[16] /*pexprnode7*/); /*new ACallReassignExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1028: while(false);
   tracehead = trace.prev;
   return;
@@ -29996,13 +29996,13 @@ void parser___ReduceAction499___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -30014,13 +30014,13 @@ void parser___ReduceAction499___action(val_t  self, val_t  param0) {
   variable[11] =  variable[6] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 16613); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[5] /*nodearraylist3*/;
@@ -30032,8 +30032,8 @@ void parser___ReduceAction499___action(val_t  self, val_t  param0) {
   variable[15] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*passignopnode6*/,  variable[13] /*pexprnode7*/); /*new ACallReassignExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1030: while(false);
   tracehead = trace.prev;
   return;
@@ -30060,13 +30060,13 @@ void parser___ReduceAction500___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -30076,13 +30076,13 @@ void parser___ReduceAction500___action(val_t  self, val_t  param0) {
   variable[10] =  variable[6] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction500___action, LOCATE_parser, 16650); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[5] /*nodearraylist3*/;
@@ -30094,8 +30094,8 @@ void parser___ReduceAction500___action(val_t  self, val_t  param0) {
   variable[14] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*passignopnode5*/,  variable[12] /*pexprnode6*/); /*new ABraReassignExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1032: while(false);
   tracehead = trace.prev;
   return;
@@ -30122,9 +30122,9 @@ void parser___ReduceAction501___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
@@ -30135,8 +30135,8 @@ void parser___ReduceAction501___action(val_t  self, val_t  param0) {
   variable[9] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr( variable[6] /*tkwdonode2*/,  variable[7] /*pexprnode3*/); /*new ADoExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1034: while(false);
   tracehead = trace.prev;
   return;
@@ -30163,21 +30163,21 @@ void parser___ReduceAction502___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
   variable[12] =  variable[11] /*nodearraylist1*/;
   variable[13] = TAG_Bool(( variable[12] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -30194,8 +30194,8 @@ void parser___ReduceAction502___action(val_t  self, val_t  param0) {
   variable[17] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[12] /*tkwifnode2*/,  variable[13] /*pexprnode3*/,  variable[14] /*pexprnode4*/,  variable[15] /*pexprnode5*/); /*new AIfExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(91)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(91)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1036: while(false);
   tracehead = trace.prev;
   return;
@@ -30222,17 +30222,17 @@ void parser___ReduceAction503___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[10] =  variable[9] /*nodearraylist1*/;
   variable[11] = TAG_Bool(( variable[10] /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
@@ -30249,8 +30249,8 @@ void parser___ReduceAction503___action(val_t  self, val_t  param0) {
   variable[15] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr( variable[10] /*tkwwhilenode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*tkwdonode4*/,  variable[13] /*pexprnode5*/); /*new AWhileExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1038: while(false);
   tracehead = trace.prev;
   return;
@@ -30277,13 +30277,13 @@ void parser___ReduceAction504___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -30297,8 +30297,8 @@ void parser___ReduceAction504___action(val_t  self, val_t  param0) {
   variable[12] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwdonode3*/,  variable[10] /*pexprnode4*/); /*new AForExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1040: while(false);
   tracehead = trace.prev;
   return;
@@ -30325,9 +30325,9 @@ void parser___ReduceAction505___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
@@ -30338,8 +30338,8 @@ void parser___ReduceAction505___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[6] /*tkwassertnode2*/,  NIT_NULL /*null*/,  variable[7] /*pexprnode4*/); /*new AAssertExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1042: while(false);
   tracehead = trace.prev;
   return;
@@ -30366,11 +30366,11 @@ void parser___ReduceAction506___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
@@ -30384,8 +30384,8 @@ void parser___ReduceAction506___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[7] /*tkwassertnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*pexprnode4*/); /*new AAssertExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1044: while(false);
   tracehead = trace.prev;
   return;
@@ -30412,14 +30412,14 @@ void parser___ReduceAction507___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction507___action, LOCATE_parser, 16832); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1046: while(false);
   tracehead = trace.prev;
   return;
@@ -30446,17 +30446,17 @@ void parser___ReduceAction508___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -30471,32 +30471,32 @@ void parser___ReduceAction508___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 16856); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 16865); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1048: while(false);
   tracehead = trace.prev;
   return;
@@ -30523,11 +30523,11 @@ void parser___ReduceAction509___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -30541,32 +30541,32 @@ void parser___ReduceAction509___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 16899); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 16908); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1050: while(false);
   tracehead = trace.prev;
   return;
@@ -30593,11 +30593,11 @@ void parser___ReduceAction510___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -30609,32 +30609,32 @@ void parser___ReduceAction510___action(val_t  self, val_t  param0) {
   variable[10] =  variable[5] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction510___action, LOCATE_parser, 16940); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction510___action, LOCATE_parser, 16949); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[9] /*pexprnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/); /*new ABraExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1052: while(false);
   tracehead = trace.prev;
   return;
@@ -30661,14 +30661,14 @@ void parser___ReduceAction511___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction511___action, LOCATE_parser, 16974); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1054: while(false);
   tracehead = trace.prev;
   return;
@@ -30695,17 +30695,17 @@ void parser___ReduceAction512___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -30720,32 +30720,32 @@ void parser___ReduceAction512___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 16998); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 17007); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1056: while(false);
   tracehead = trace.prev;
   return;
@@ -30772,11 +30772,11 @@ void parser___ReduceAction513___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -30790,32 +30790,32 @@ void parser___ReduceAction513___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction513___action, LOCATE_parser, 17041); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction513___action, LOCATE_parser, 17050); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1058: while(false);
   tracehead = trace.prev;
   return;
@@ -30842,7 +30842,7 @@ void parser___ReduceAction514___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -30852,8 +30852,8 @@ void parser___ReduceAction514___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1060: while(false);
   tracehead = trace.prev;
   return;
@@ -30880,17 +30880,17 @@ void parser___ReduceAction515___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -30900,20 +30900,20 @@ void parser___ReduceAction515___action(val_t  self, val_t  param0) {
   variable[12] =  variable[6] /*nodearraylist4*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction515___action, LOCATE_parser, 17102); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AType_parser_prod___AType___init_atype( variable[11] /*tclassidnode2*/,  variable[10] /*listnode4*/); /*new AType*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*ptypenode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1062: while(false);
   tracehead = trace.prev;
   return;
@@ -30940,14 +30940,14 @@ void parser___ReduceAction516___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction516___action, LOCATE_parser, 17126); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1064: while(false);
   tracehead = trace.prev;
   return;
@@ -30974,17 +30974,17 @@ void parser___ReduceAction517___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -30999,32 +30999,32 @@ void parser___ReduceAction517___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 17150); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 17159); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1066: while(false);
   tracehead = trace.prev;
   return;
@@ -31051,11 +31051,11 @@ void parser___ReduceAction518___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -31069,32 +31069,32 @@ void parser___ReduceAction518___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction518___action, LOCATE_parser, 17193); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction518___action, LOCATE_parser, 17202); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1068: while(false);
   tracehead = trace.prev;
   return;
@@ -31121,14 +31121,14 @@ void parser___ReduceAction519___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 17228); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1070: while(false);
   tracehead = trace.prev;
   return;
@@ -31155,27 +31155,27 @@ void parser___ReduceAction520___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -31198,8 +31198,8 @@ void parser___ReduceAction520___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/); /*new AIfexprExpr*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1072: while(false);
   tracehead = trace.prev;
   return;
@@ -31226,14 +31226,14 @@ void parser___ReduceAction521___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction521___action, LOCATE_parser, 17282); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1074: while(false);
   tracehead = trace.prev;
   return;
@@ -31260,13 +31260,13 @@ void parser___ReduceAction522___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31277,8 +31277,8 @@ void parser___ReduceAction522___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AOrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1076: while(false);
   tracehead = trace.prev;
   return;
@@ -31305,13 +31305,13 @@ void parser___ReduceAction523___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31322,8 +31322,8 @@ void parser___ReduceAction523___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AAndExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1078: while(false);
   tracehead = trace.prev;
   return;
@@ -31350,14 +31350,14 @@ void parser___ReduceAction524___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction524___action, LOCATE_parser, 17339); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1080: while(false);
   tracehead = trace.prev;
   return;
@@ -31384,11 +31384,11 @@ void parser___ReduceAction525___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
@@ -31399,8 +31399,8 @@ void parser___ReduceAction525___action(val_t  self, val_t  param0) {
   variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/); /*new ANotExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1082: while(false);
   tracehead = trace.prev;
   return;
@@ -31427,14 +31427,14 @@ void parser___ReduceAction526___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction526___action, LOCATE_parser, 17373); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1084: while(false);
   tracehead = trace.prev;
   return;
@@ -31461,13 +31461,13 @@ void parser___ReduceAction527___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31478,8 +31478,8 @@ void parser___ReduceAction527___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEqExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1086: while(false);
   tracehead = trace.prev;
   return;
@@ -31506,13 +31506,13 @@ void parser___ReduceAction528___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31523,8 +31523,8 @@ void parser___ReduceAction528___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1088: while(false);
   tracehead = trace.prev;
   return;
@@ -31551,13 +31551,13 @@ void parser___ReduceAction529___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31568,8 +31568,8 @@ void parser___ReduceAction529___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ANeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1090: while(false);
   tracehead = trace.prev;
   return;
@@ -31596,13 +31596,13 @@ void parser___ReduceAction530___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31613,8 +31613,8 @@ void parser___ReduceAction530___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1092: while(false);
   tracehead = trace.prev;
   return;
@@ -31641,13 +31641,13 @@ void parser___ReduceAction531___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31658,8 +31658,8 @@ void parser___ReduceAction531___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1094: while(false);
   tracehead = trace.prev;
   return;
@@ -31686,13 +31686,13 @@ void parser___ReduceAction532___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31703,8 +31703,8 @@ void parser___ReduceAction532___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1096: while(false);
   tracehead = trace.prev;
   return;
@@ -31731,13 +31731,13 @@ void parser___ReduceAction533___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31748,8 +31748,8 @@ void parser___ReduceAction533___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1098: while(false);
   tracehead = trace.prev;
   return;
@@ -31776,13 +31776,13 @@ void parser___ReduceAction534___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31793,8 +31793,8 @@ void parser___ReduceAction534___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarshipExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1100: while(false);
   tracehead = trace.prev;
   return;
@@ -31821,13 +31821,13 @@ void parser___ReduceAction535___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31838,8 +31838,8 @@ void parser___ReduceAction535___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/); /*new AIsaExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1102: while(false);
   tracehead = trace.prev;
   return;
@@ -31866,14 +31866,14 @@ void parser___ReduceAction536___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction536___action, LOCATE_parser, 17584); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1104: while(false);
   tracehead = trace.prev;
   return;
@@ -31900,13 +31900,13 @@ void parser___ReduceAction537___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31917,8 +31917,8 @@ void parser___ReduceAction537___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APlusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1106: while(false);
   tracehead = trace.prev;
   return;
@@ -31945,13 +31945,13 @@ void parser___ReduceAction538___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -31962,8 +31962,8 @@ void parser___ReduceAction538___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AMinusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1108: while(false);
   tracehead = trace.prev;
   return;
@@ -31990,14 +31990,14 @@ void parser___ReduceAction539___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction539___action, LOCATE_parser, 17641); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1110: while(false);
   tracehead = trace.prev;
   return;
@@ -32024,13 +32024,13 @@ void parser___ReduceAction540___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -32041,8 +32041,8 @@ void parser___ReduceAction540___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1112: while(false);
   tracehead = trace.prev;
   return;
@@ -32069,13 +32069,13 @@ void parser___ReduceAction541___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -32086,8 +32086,8 @@ void parser___ReduceAction541___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ASlashExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1114: while(false);
   tracehead = trace.prev;
   return;
@@ -32114,13 +32114,13 @@ void parser___ReduceAction542___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -32131,8 +32131,8 @@ void parser___ReduceAction542___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APercentExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1116: while(false);
   tracehead = trace.prev;
   return;
@@ -32159,14 +32159,14 @@ void parser___ReduceAction543___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction543___action, LOCATE_parser, 17720); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1118: while(false);
   tracehead = trace.prev;
   return;
@@ -32193,11 +32193,11 @@ void parser___ReduceAction544___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
@@ -32208,8 +32208,8 @@ void parser___ReduceAction544___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/); /*new AUminusExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1120: while(false);
   tracehead = trace.prev;
   return;
@@ -32236,11 +32236,11 @@ void parser___ReduceAction545___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
@@ -32251,8 +32251,8 @@ void parser___ReduceAction545___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/); /*new AOnceExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1122: while(false);
   tracehead = trace.prev;
   return;
@@ -32279,14 +32279,14 @@ void parser___ReduceAction546___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction546___action, LOCATE_parser, 17775); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1124: while(false);
   tracehead = trace.prev;
   return;
@@ -32313,13 +32313,13 @@ void parser___ReduceAction547___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -32332,20 +32332,20 @@ void parser___ReduceAction547___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist4*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction547___action, LOCATE_parser, 17796); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/); /*new ANewExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1126: while(false);
   tracehead = trace.prev;
   return;
@@ -32372,13 +32372,13 @@ void parser___ReduceAction548___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -32389,8 +32389,8 @@ void parser___ReduceAction548___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/); /*new AAttrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1128: while(false);
   tracehead = trace.prev;
   return;
@@ -32417,7 +32417,7 @@ void parser___ReduceAction549___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[5] = variable[6];
@@ -32427,8 +32427,8 @@ void parser___ReduceAction549___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/); /*new AAttrExpr*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1130: while(false);
   tracehead = trace.prev;
   return;
@@ -32455,15 +32455,15 @@ void parser___ReduceAction550___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -32478,20 +32478,20 @@ void parser___ReduceAction550___action(val_t  self, val_t  param0) {
   variable[13] =  variable[4] /*nodearraylist5*/;
   variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction550___action, LOCATE_parser, 17873); nit_exit(1);}
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[13] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[14])) { /*if*/
-    variable[14] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[14])) { /*if*/
       variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/); /*new ACallExpr*/
   variable[14] = variable[15];
   variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  variable[15] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1132: while(false);
   tracehead = trace.prev;
   return;
@@ -32518,9 +32518,9 @@ void parser___ReduceAction551___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -32534,20 +32534,20 @@ void parser___ReduceAction551___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist2*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction551___action, LOCATE_parser, 17906); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/); /*new ACallExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1134: while(false);
   tracehead = trace.prev;
   return;
@@ -32574,9 +32574,9 @@ void parser___ReduceAction552___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -32586,20 +32586,20 @@ void parser___ReduceAction552___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction552___action, LOCATE_parser, 17936); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1136: while(false);
   tracehead = trace.prev;
   return;
@@ -32626,11 +32626,11 @@ void parser___ReduceAction553___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -32643,20 +32643,20 @@ void parser___ReduceAction553___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction553___action, LOCATE_parser, 17968); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1138: while(false);
   tracehead = trace.prev;
   return;
@@ -32683,15 +32683,15 @@ void parser___ReduceAction554___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
   variable[10] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[9] = variable[10];
@@ -32704,20 +32704,20 @@ void parser___ReduceAction554___action(val_t  self, val_t  param0) {
   variable[12] =  variable[4] /*nodearraylist5*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction554___action, LOCATE_parser, 18002); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[9] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/); /*new AInitExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1140: while(false);
   tracehead = trace.prev;
   return;
@@ -32744,9 +32744,9 @@ void parser___ReduceAction555___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -32758,20 +32758,20 @@ void parser___ReduceAction555___action(val_t  self, val_t  param0) {
   variable[9] =  variable[4] /*nodearraylist2*/;
   variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction555___action, LOCATE_parser, 18033); nit_exit(1);}
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
-    variable[10] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[10])) { /*if*/
       variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/); /*new AInitExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1142: while(false);
   tracehead = trace.prev;
   return;
@@ -32798,19 +32798,19 @@ void parser___ReduceAction556___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -32826,20 +32826,20 @@ void parser___ReduceAction556___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist7*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction556___action, LOCATE_parser, 18071); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/); /*new ANewExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1144: while(false);
   tracehead = trace.prev;
   return;
@@ -32866,7 +32866,7 @@ void parser___ReduceAction557___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
@@ -32874,8 +32874,8 @@ void parser___ReduceAction557___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/); /*new ASelfExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1146: while(false);
   tracehead = trace.prev;
   return;
@@ -32902,7 +32902,7 @@ void parser___ReduceAction558___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
@@ -32910,8 +32910,8 @@ void parser___ReduceAction558___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/); /*new ATrueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1148: while(false);
   tracehead = trace.prev;
   return;
@@ -32938,7 +32938,7 @@ void parser___ReduceAction559___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
@@ -32946,8 +32946,8 @@ void parser___ReduceAction559___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1150: while(false);
   tracehead = trace.prev;
   return;
@@ -32974,7 +32974,7 @@ void parser___ReduceAction560___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
@@ -32982,8 +32982,8 @@ void parser___ReduceAction560___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/); /*new ANullExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1152: while(false);
   tracehead = trace.prev;
   return;
@@ -33010,7 +33010,7 @@ void parser___ReduceAction561___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
@@ -33018,8 +33018,8 @@ void parser___ReduceAction561___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/); /*new AIntExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1154: while(false);
   tracehead = trace.prev;
   return;
@@ -33046,7 +33046,7 @@ void parser___ReduceAction562___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
@@ -33054,8 +33054,8 @@ void parser___ReduceAction562___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/); /*new AFloatExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1156: while(false);
   tracehead = trace.prev;
   return;
@@ -33082,7 +33082,7 @@ void parser___ReduceAction563___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
@@ -33090,8 +33090,8 @@ void parser___ReduceAction563___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/); /*new ACharExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1158: while(false);
   tracehead = trace.prev;
   return;
@@ -33118,7 +33118,7 @@ void parser___ReduceAction564___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
@@ -33126,8 +33126,8 @@ void parser___ReduceAction564___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/); /*new AStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1160: while(false);
   tracehead = trace.prev;
   return;
@@ -33154,14 +33154,14 @@ void parser___ReduceAction565___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction565___action, LOCATE_parser, 18225); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1162: while(false);
   tracehead = trace.prev;
   return;
@@ -33188,25 +33188,25 @@ void parser___ReduceAction566___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33220,8 +33220,8 @@ void parser___ReduceAction566___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/); /*new AAsCastExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1164: while(false);
   tracehead = trace.prev;
   return;
@@ -33248,7 +33248,7 @@ void parser___ReduceAction567___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
@@ -33258,8 +33258,8 @@ void parser___ReduceAction567___action(val_t  self, val_t  param0) {
   variable[8] = NEW_AType_parser_prod___AType___init_atype( variable[6] /*tclassidnode2*/,  variable[5] /*listnode3*/); /*new AType*/
   variable[7] = variable[8];
   variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1166: while(false);
   tracehead = trace.prev;
   return;
@@ -33286,14 +33286,14 @@ void parser___ReduceAction568___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 18287); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1168: while(false);
   tracehead = trace.prev;
   return;
@@ -33320,17 +33320,17 @@ void parser___ReduceAction569___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -33345,32 +33345,32 @@ void parser___ReduceAction569___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction569___action, LOCATE_parser, 18311); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction569___action, LOCATE_parser, 18320); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1170: while(false);
   tracehead = trace.prev;
   return;
@@ -33397,11 +33397,11 @@ void parser___ReduceAction570___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -33415,32 +33415,32 @@ void parser___ReduceAction570___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 18354); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 18363); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1172: while(false);
   tracehead = trace.prev;
   return;
@@ -33467,14 +33467,14 @@ void parser___ReduceAction571___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 18389); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1174: while(false);
   tracehead = trace.prev;
   return;
@@ -33501,27 +33501,27 @@ void parser___ReduceAction572___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
-  variable[15] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[14] = variable[15];
   variable[15] =  variable[14] /*nodearraylist1*/;
   variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
@@ -33544,8 +33544,8 @@ void parser___ReduceAction572___action(val_t  self, val_t  param0) {
   variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/); /*new AIfexprExpr*/
   variable[21] = variable[22];
   variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  variable[22] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1176: while(false);
   tracehead = trace.prev;
   return;
@@ -33572,14 +33572,14 @@ void parser___ReduceAction573___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction573___action, LOCATE_parser, 18443); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1178: while(false);
   tracehead = trace.prev;
   return;
@@ -33606,13 +33606,13 @@ void parser___ReduceAction574___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33623,8 +33623,8 @@ void parser___ReduceAction574___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AOrExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1180: while(false);
   tracehead = trace.prev;
   return;
@@ -33651,13 +33651,13 @@ void parser___ReduceAction575___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33668,8 +33668,8 @@ void parser___ReduceAction575___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AAndExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1182: while(false);
   tracehead = trace.prev;
   return;
@@ -33696,14 +33696,14 @@ void parser___ReduceAction576___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction576___action, LOCATE_parser, 18500); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1184: while(false);
   tracehead = trace.prev;
   return;
@@ -33730,11 +33730,11 @@ void parser___ReduceAction577___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
@@ -33745,8 +33745,8 @@ void parser___ReduceAction577___action(val_t  self, val_t  param0) {
   variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/); /*new ANotExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1186: while(false);
   tracehead = trace.prev;
   return;
@@ -33773,14 +33773,14 @@ void parser___ReduceAction578___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction578___action, LOCATE_parser, 18534); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1188: while(false);
   tracehead = trace.prev;
   return;
@@ -33807,13 +33807,13 @@ void parser___ReduceAction579___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33824,8 +33824,8 @@ void parser___ReduceAction579___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEqExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1190: while(false);
   tracehead = trace.prev;
   return;
@@ -33852,13 +33852,13 @@ void parser___ReduceAction580___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33869,8 +33869,8 @@ void parser___ReduceAction580___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AEeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1192: while(false);
   tracehead = trace.prev;
   return;
@@ -33897,13 +33897,13 @@ void parser___ReduceAction581___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33914,8 +33914,8 @@ void parser___ReduceAction581___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ANeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1194: while(false);
   tracehead = trace.prev;
   return;
@@ -33942,13 +33942,13 @@ void parser___ReduceAction582___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -33959,8 +33959,8 @@ void parser___ReduceAction582___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1196: while(false);
   tracehead = trace.prev;
   return;
@@ -33987,13 +33987,13 @@ void parser___ReduceAction583___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34004,8 +34004,8 @@ void parser___ReduceAction583___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ALeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1198: while(false);
   tracehead = trace.prev;
   return;
@@ -34032,13 +34032,13 @@ void parser___ReduceAction584___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34049,8 +34049,8 @@ void parser___ReduceAction584___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGtExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1200: while(false);
   tracehead = trace.prev;
   return;
@@ -34077,13 +34077,13 @@ void parser___ReduceAction585___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34094,8 +34094,8 @@ void parser___ReduceAction585___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AGeExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1202: while(false);
   tracehead = trace.prev;
   return;
@@ -34122,13 +34122,13 @@ void parser___ReduceAction586___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34139,8 +34139,8 @@ void parser___ReduceAction586___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarshipExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1204: while(false);
   tracehead = trace.prev;
   return;
@@ -34167,13 +34167,13 @@ void parser___ReduceAction587___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34184,8 +34184,8 @@ void parser___ReduceAction587___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/); /*new AIsaExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1206: while(false);
   tracehead = trace.prev;
   return;
@@ -34212,14 +34212,14 @@ void parser___ReduceAction588___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction588___action, LOCATE_parser, 18745); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1208: while(false);
   tracehead = trace.prev;
   return;
@@ -34246,13 +34246,13 @@ void parser___ReduceAction589___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34263,8 +34263,8 @@ void parser___ReduceAction589___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APlusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1210: while(false);
   tracehead = trace.prev;
   return;
@@ -34291,13 +34291,13 @@ void parser___ReduceAction590___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34308,8 +34308,8 @@ void parser___ReduceAction590___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AMinusExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1212: while(false);
   tracehead = trace.prev;
   return;
@@ -34336,14 +34336,14 @@ void parser___ReduceAction591___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction591___action, LOCATE_parser, 18802); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1214: while(false);
   tracehead = trace.prev;
   return;
@@ -34370,13 +34370,13 @@ void parser___ReduceAction592___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34387,8 +34387,8 @@ void parser___ReduceAction592___action(val_t  self, val_t  param0) {
   variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new AStarExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1216: while(false);
   tracehead = trace.prev;
   return;
@@ -34415,13 +34415,13 @@ void parser___ReduceAction593___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34432,8 +34432,8 @@ void parser___ReduceAction593___action(val_t  self, val_t  param0) {
   variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new ASlashExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1218: while(false);
   tracehead = trace.prev;
   return;
@@ -34460,13 +34460,13 @@ void parser___ReduceAction594___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[8] =  variable[7] /*nodearraylist1*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34477,8 +34477,8 @@ void parser___ReduceAction594___action(val_t  self, val_t  param0) {
   variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/); /*new APercentExpr*/
   variable[10] = variable[11];
   variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  variable[11] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1220: while(false);
   tracehead = trace.prev;
   return;
@@ -34505,14 +34505,14 @@ void parser___ReduceAction595___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction595___action, LOCATE_parser, 18881); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1222: while(false);
   tracehead = trace.prev;
   return;
@@ -34539,11 +34539,11 @@ void parser___ReduceAction596___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
@@ -34554,8 +34554,8 @@ void parser___ReduceAction596___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/); /*new AUminusExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1224: while(false);
   tracehead = trace.prev;
   return;
@@ -34582,11 +34582,11 @@ void parser___ReduceAction597___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
@@ -34597,8 +34597,8 @@ void parser___ReduceAction597___action(val_t  self, val_t  param0) {
   variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/); /*new AOnceExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1226: while(false);
   tracehead = trace.prev;
   return;
@@ -34625,14 +34625,14 @@ void parser___ReduceAction598___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction598___action, LOCATE_parser, 18936); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1228: while(false);
   tracehead = trace.prev;
   return;
@@ -34659,13 +34659,13 @@ void parser___ReduceAction599___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
   variable[9] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[8] = variable[9];
@@ -34678,20 +34678,20 @@ void parser___ReduceAction599___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist4*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction599___action, LOCATE_parser, 18957); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/); /*new ANewExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1230: while(false);
   tracehead = trace.prev;
   return;
@@ -34718,9 +34718,9 @@ void parser___ReduceAction600___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[6] =  variable[5] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -34731,8 +34731,8 @@ void parser___ReduceAction600___action(val_t  self, val_t  param0) {
   variable[9] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[6] /*pexprnode2*/,  variable[7] /*tattridnode3*/); /*new AAttrExpr*/
   variable[8] = variable[9];
   variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1232: while(false);
   tracehead = trace.prev;
   return;
@@ -34759,11 +34759,11 @@ void parser___ReduceAction601___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -34778,20 +34778,20 @@ void parser___ReduceAction601___action(val_t  self, val_t  param0) {
   variable[11] =  variable[4] /*nodearraylist3*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction601___action, LOCATE_parser, 19011); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[13] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode6*/); /*new ACallExpr*/
   variable[12] = variable[13];
   variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  variable[13] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1234: while(false);
   tracehead = trace.prev;
   return;
@@ -34818,9 +34818,9 @@ void parser___ReduceAction602___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -34830,20 +34830,20 @@ void parser___ReduceAction602___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction602___action, LOCATE_parser, 19041); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/); /*new ASuperExpr*/
   variable[9] = variable[10];
   variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  variable[10] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1236: while(false);
   tracehead = trace.prev;
   return;
@@ -34870,11 +34870,11 @@ void parser___ReduceAction603___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -34887,20 +34887,20 @@ void parser___ReduceAction603___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction603___action, LOCATE_parser, 19073); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/); /*new ASuperExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1238: while(false);
   tracehead = trace.prev;
   return;
@@ -34927,11 +34927,11 @@ void parser___ReduceAction604___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -34944,20 +34944,20 @@ void parser___ReduceAction604___action(val_t  self, val_t  param0) {
   variable[10] =  variable[4] /*nodearraylist3*/;
   variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction604___action, LOCATE_parser, 19105); nit_exit(1);}
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[10] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
-    variable[11] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[11])) { /*if*/
       variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwinitnode3*/,  variable[7] /*listnode5*/); /*new AInitExpr*/
   variable[11] = variable[12];
   variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  variable[12] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1240: while(false);
   tracehead = trace.prev;
   return;
@@ -34984,19 +34984,19 @@ void parser___ReduceAction605___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
   variable[12] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[11] = variable[12];
@@ -35012,20 +35012,20 @@ void parser___ReduceAction605___action(val_t  self, val_t  param0) {
   variable[15] =  variable[4] /*nodearraylist7*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction605___action, LOCATE_parser, 19143); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/); /*new ANewExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1242: while(false);
   tracehead = trace.prev;
   return;
@@ -35052,7 +35052,7 @@ void parser___ReduceAction606___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
@@ -35060,8 +35060,8 @@ void parser___ReduceAction606___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/); /*new ASelfExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1244: while(false);
   tracehead = trace.prev;
   return;
@@ -35088,7 +35088,7 @@ void parser___ReduceAction607___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
@@ -35096,8 +35096,8 @@ void parser___ReduceAction607___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/); /*new ATrueExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1246: while(false);
   tracehead = trace.prev;
   return;
@@ -35124,7 +35124,7 @@ void parser___ReduceAction608___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
@@ -35132,8 +35132,8 @@ void parser___ReduceAction608___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1248: while(false);
   tracehead = trace.prev;
   return;
@@ -35160,7 +35160,7 @@ void parser___ReduceAction609___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
@@ -35168,8 +35168,8 @@ void parser___ReduceAction609___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/); /*new ANullExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1250: while(false);
   tracehead = trace.prev;
   return;
@@ -35196,7 +35196,7 @@ void parser___ReduceAction610___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
@@ -35204,8 +35204,8 @@ void parser___ReduceAction610___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/); /*new AIntExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1252: while(false);
   tracehead = trace.prev;
   return;
@@ -35232,7 +35232,7 @@ void parser___ReduceAction611___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
@@ -35240,8 +35240,8 @@ void parser___ReduceAction611___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/); /*new AFloatExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1254: while(false);
   tracehead = trace.prev;
   return;
@@ -35268,7 +35268,7 @@ void parser___ReduceAction612___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
@@ -35276,8 +35276,8 @@ void parser___ReduceAction612___action(val_t  self, val_t  param0) {
   variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/); /*new ACharExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1256: while(false);
   tracehead = trace.prev;
   return;
@@ -35304,7 +35304,7 @@ void parser___ReduceAction613___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
@@ -35312,8 +35312,8 @@ void parser___ReduceAction613___action(val_t  self, val_t  param0) {
   variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/); /*new AStringExpr*/
   variable[6] = variable[7];
   variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1258: while(false);
   tracehead = trace.prev;
   return;
@@ -35340,14 +35340,14 @@ void parser___ReduceAction614___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction614___action, LOCATE_parser, 19297); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1260: while(false);
   tracehead = trace.prev;
   return;
@@ -35374,25 +35374,25 @@ void parser___ReduceAction615___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
-  variable[11] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[10] = variable[11];
-  variable[12] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[11] = variable[12];
-  variable[13] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[12] = variable[13];
-  variable[14] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[13] = variable[14];
   variable[14] =  variable[13] /*nodearraylist1*/;
   variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
@@ -35406,8 +35406,8 @@ void parser___ReduceAction615___action(val_t  self, val_t  param0) {
   variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/); /*new AAsCastExpr*/
   variable[17] = variable[18];
   variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  variable[18] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1262: while(false);
   tracehead = trace.prev;
   return;
@@ -35434,18 +35434,18 @@ void parser___ReduceAction616___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[7] =  variable[6] /*nodearraylist1*/;
   variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction616___action, LOCATE_parser, 19343); nit_exit(1);}
   variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  variable[8] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1264: while(false);
   tracehead = trace.prev;
   return;
@@ -35475,8 +35475,8 @@ void parser___ReduceAction617___action(val_t  self, val_t  param0) {
   variable[5] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable[4] = variable[5];
   variable[3] =  variable[4] /*pexprnode1*/ /*node_list=*/;
-  variable[5] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1266: while(false);
   tracehead = trace.prev;
   return;
@@ -35503,14 +35503,14 @@ void parser___ReduceAction618___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction618___action, LOCATE_parser, 19368); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1268: while(false);
   tracehead = trace.prev;
   return;
@@ -35537,17 +35537,17 @@ void parser___ReduceAction619___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -35562,32 +35562,32 @@ void parser___ReduceAction619___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction619___action, LOCATE_parser, 19392); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction619___action, LOCATE_parser, 19401); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1270: while(false);
   tracehead = trace.prev;
   return;
@@ -35614,11 +35614,11 @@ void parser___ReduceAction620___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -35632,32 +35632,32 @@ void parser___ReduceAction620___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction620___action, LOCATE_parser, 19435); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction620___action, LOCATE_parser, 19444); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1272: while(false);
   tracehead = trace.prev;
   return;
@@ -35684,14 +35684,14 @@ void parser___ReduceAction621___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[5] =  variable[4] /*nodearraylist1*/;
   variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction621___action, LOCATE_parser, 19470); nit_exit(1);}
   variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  variable[6] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1274: while(false);
   tracehead = trace.prev;
   return;
@@ -35718,17 +35718,17 @@ void parser___ReduceAction622___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
-  variable[8] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[7] = variable[8];
-  variable[9] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[8] = variable[9];
-  variable[10] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[9] = variable[10];
   variable[11] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[10] = variable[11];
@@ -35743,32 +35743,32 @@ void parser___ReduceAction622___action(val_t  self, val_t  param0) {
   variable[14] =  variable[5] /*nodearraylist5*/;
   variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction622___action, LOCATE_parser, 19494); nit_exit(1);}
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[14] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[15])) { /*if*/
-    variable[15] = ((array___AbstractArray___is_empty_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[15])) { /*if*/
       variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[10] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[15] =  variable[4] /*nodearraylist6*/;
   variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction622___action, LOCATE_parser, 19503); nit_exit(1);}
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[15] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[16])) { /*if*/
-    variable[16] = ((array___AbstractArray___is_empty_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[16])) { /*if*/
       variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[11] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/); /*new ACallExpr*/
   variable[16] = variable[17];
   variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  variable[17] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1276: while(false);
   tracehead = trace.prev;
   return;
@@ -35795,11 +35795,11 @@ void parser___ReduceAction623___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
-  variable[7] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[6] = variable[7];
   variable[8] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[7] = variable[8];
@@ -35813,32 +35813,32 @@ void parser___ReduceAction623___action(val_t  self, val_t  param0) {
   variable[11] =  variable[5] /*nodearraylist2*/;
   variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction623___action, LOCATE_parser, 19537); nit_exit(1);}
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[11] /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[12])) { /*if*/
-    variable[12] = ((array___AbstractArray___is_empty_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
+    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[12])) { /*if*/
       variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[7] /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable[12] =  variable[4] /*nodearraylist3*/;
   variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction623___action, LOCATE_parser, 19546); nit_exit(1);}
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[12] /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[13])) { /*if*/
-    variable[13] = ((array___AbstractArray___is_empty_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
+    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[13])) { /*if*/
       variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[8] /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/); /*new ACallExpr*/
   variable[13] = variable[14];
   variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  variable[14] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1278: while(false);
   tracehead = trace.prev;
   return;
@@ -35865,20 +35865,20 @@ void parser___ReduceAction624___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pimportnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pimportnode1*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction624___action, LOCATE_parser, 19573); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pimportnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pimportnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pimportnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pimportnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pimportnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pimportnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pimportnode1*/)( variable[6] /*pimportnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pimportnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pimportnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1280: while(false);
   tracehead = trace.prev;
   return;
@@ -35905,9 +35905,9 @@ void parser___ReduceAction625___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -35917,22 +35917,22 @@ void parser___ReduceAction625___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pimportnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pimportnode2*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction625___action, LOCATE_parser, 19593); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pimportnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pimportnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pimportnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pimportnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pimportnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pimportnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pimportnode2*/)( variable[8] /*pimportnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pimportnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pimportnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1282: while(false);
   tracehead = trace.prev;
   return;
@@ -35959,20 +35959,20 @@ void parser___ReduceAction626___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pclassdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclassdefnode1*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction626___action, LOCATE_parser, 19617); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclassdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclassdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclassdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclassdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclassdefnode1*/)( variable[6] /*pclassdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclassdefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclassdefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1284: while(false);
   tracehead = trace.prev;
   return;
@@ -35999,9 +35999,9 @@ void parser___ReduceAction627___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36011,22 +36011,22 @@ void parser___ReduceAction627___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pclassdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pclassdefnode2*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction627___action, LOCATE_parser, 19637); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclassdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pclassdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclassdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pclassdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pclassdefnode2*/)( variable[8] /*pclassdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pclassdefnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pclassdefnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1286: while(false);
   tracehead = trace.prev;
   return;
@@ -36053,20 +36053,20 @@ void parser___ReduceAction628___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*psuperclassnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*psuperclassnode1*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction628___action, LOCATE_parser, 19661); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*psuperclassnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*psuperclassnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*psuperclassnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*psuperclassnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*psuperclassnode1*/)( variable[6] /*psuperclassnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*psuperclassnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*psuperclassnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1288: while(false);
   tracehead = trace.prev;
   return;
@@ -36093,9 +36093,9 @@ void parser___ReduceAction629___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36105,22 +36105,22 @@ void parser___ReduceAction629___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*psuperclassnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*psuperclassnode2*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction629___action, LOCATE_parser, 19681); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*psuperclassnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*psuperclassnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*psuperclassnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*psuperclassnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*psuperclassnode2*/)( variable[8] /*psuperclassnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*psuperclassnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*psuperclassnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1290: while(false);
   tracehead = trace.prev;
   return;
@@ -36147,20 +36147,20 @@ void parser___ReduceAction630___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction630___action, LOCATE_parser, 19705); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pformaldefnode1*/)( variable[6] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pformaldefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1292: while(false);
   tracehead = trace.prev;
   return;
@@ -36187,9 +36187,9 @@ void parser___ReduceAction631___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36199,22 +36199,22 @@ void parser___ReduceAction631___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pformaldefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pformaldefnode2*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction631___action, LOCATE_parser, 19725); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pformaldefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pformaldefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pformaldefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pformaldefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pformaldefnode2*/)( variable[8] /*pformaldefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pformaldefnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pformaldefnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1294: while(false);
   tracehead = trace.prev;
   return;
@@ -36241,20 +36241,20 @@ void parser___ReduceAction632___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction632___action, LOCATE_parser, 19749); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1296: while(false);
   tracehead = trace.prev;
   return;
@@ -36281,9 +36281,9 @@ void parser___ReduceAction633___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36293,22 +36293,22 @@ void parser___ReduceAction633___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction633___action, LOCATE_parser, 19769); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1298: while(false);
   tracehead = trace.prev;
   return;
@@ -36335,20 +36335,20 @@ void parser___ReduceAction634___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction634___action, LOCATE_parser, 19793); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1300: while(false);
   tracehead = trace.prev;
   return;
@@ -36375,9 +36375,9 @@ void parser___ReduceAction635___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36387,22 +36387,22 @@ void parser___ReduceAction635___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction635___action, LOCATE_parser, 19813); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1302: while(false);
   tracehead = trace.prev;
   return;
@@ -36429,20 +36429,20 @@ void parser___ReduceAction636___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction636___action, LOCATE_parser, 19837); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pparamnode1*/)( variable[6] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pparamnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pparamnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1304: while(false);
   tracehead = trace.prev;
   return;
@@ -36469,9 +36469,9 @@ void parser___ReduceAction637___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36481,22 +36481,22 @@ void parser___ReduceAction637___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pparamnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pparamnode2*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction637___action, LOCATE_parser, 19857); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pparamnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pparamnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pparamnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pparamnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pparamnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pparamnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pparamnode2*/)( variable[8] /*pparamnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pparamnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pparamnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1306: while(false);
   tracehead = trace.prev;
   return;
@@ -36523,20 +36523,20 @@ void parser___ReduceAction638___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pclosuredeclnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredeclnode1*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction638___action, LOCATE_parser, 19881); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredeclnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredeclnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredeclnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredeclnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pclosuredeclnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pclosuredeclnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredeclnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredeclnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredeclnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredeclnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredeclnode1*/)( variable[6] /*pclosuredeclnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pclosuredeclnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredeclnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1308: while(false);
   tracehead = trace.prev;
   return;
@@ -36563,9 +36563,9 @@ void parser___ReduceAction639___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36575,22 +36575,22 @@ void parser___ReduceAction639___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pclosuredeclnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pclosuredeclnode2*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction639___action, LOCATE_parser, 19901); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclosuredeclnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclosuredeclnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pclosuredeclnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclosuredeclnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pclosuredeclnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pclosuredeclnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclosuredeclnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclosuredeclnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pclosuredeclnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclosuredeclnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pclosuredeclnode2*/)( variable[8] /*pclosuredeclnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pclosuredeclnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pclosuredeclnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1310: while(false);
   tracehead = trace.prev;
   return;
@@ -36617,20 +36617,20 @@ void parser___ReduceAction640___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction640___action, LOCATE_parser, 19925); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1312: while(false);
   tracehead = trace.prev;
   return;
@@ -36657,9 +36657,9 @@ void parser___ReduceAction641___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36669,22 +36669,22 @@ void parser___ReduceAction641___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*ptypenode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ptypenode2*/, COLOR_PType, ID_PType)) /*cast PType*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction641___action, LOCATE_parser, 19945); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ptypenode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*ptypenode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*ptypenode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*ptypenode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ptypenode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ptypenode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ptypenode2*/)( variable[8] /*ptypenode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*ptypenode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ptypenode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1314: while(false);
   tracehead = trace.prev;
   return;
@@ -36711,20 +36711,20 @@ void parser___ReduceAction642___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction642___action, LOCATE_parser, 19969); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1316: while(false);
   tracehead = trace.prev;
   return;
@@ -36751,9 +36751,9 @@ void parser___ReduceAction643___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36763,22 +36763,22 @@ void parser___ReduceAction643___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction643___action, LOCATE_parser, 19989); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1318: while(false);
   tracehead = trace.prev;
   return;
@@ -36805,25 +36805,25 @@ void parser___ReduceAction644___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction644___action, LOCATE_parser, 20013); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode1*/)( variable[6] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    variable[7] = ((array___AbstractArray___is_empty_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable[5] /*listnode2*/) /*AbstractArray::is_empty*/;
+    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode2*/)( variable[5] /*listnode2*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[7])) { /*if*/
       variable[5] =  variable[6] /*listnode1*/ /*listnode2=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable[5] /*listnode2*/,  variable[6] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1320: while(false);
   tracehead = trace.prev;
   return;
@@ -36850,9 +36850,9 @@ void parser___ReduceAction645___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36862,27 +36862,27 @@ void parser___ReduceAction645___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction645___action, LOCATE_parser, 20037); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1322: while(false);
   tracehead = trace.prev;
   return;
@@ -36909,20 +36909,20 @@ void parser___ReduceAction646___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction646___action, LOCATE_parser, 20065); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1324: while(false);
   tracehead = trace.prev;
   return;
@@ -36949,9 +36949,9 @@ void parser___ReduceAction647___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -36961,22 +36961,22 @@ void parser___ReduceAction647___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction647___action, LOCATE_parser, 20085); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1326: while(false);
   tracehead = trace.prev;
   return;
@@ -37003,20 +37003,20 @@ void parser___ReduceAction648___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction648___action, LOCATE_parser, 20109); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1328: while(false);
   tracehead = trace.prev;
   return;
@@ -37043,9 +37043,9 @@ void parser___ReduceAction649___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -37055,22 +37055,22 @@ void parser___ReduceAction649___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction649___action, LOCATE_parser, 20129); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tidnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*tidnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*tidnode2*/)( variable[8] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*tidnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*tidnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(134)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1330: while(false);
   tracehead = trace.prev;
   return;
@@ -37097,20 +37097,20 @@ void parser___ReduceAction650___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*tcommentnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tcommentnode1*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction650___action, LOCATE_parser, 20153); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tcommentnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*tcommentnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tcommentnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tcommentnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tcommentnode1*/)( variable[6] /*tcommentnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*tcommentnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tcommentnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(135)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(135)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1332: while(false);
   tracehead = trace.prev;
   return;
@@ -37137,9 +37137,9 @@ void parser___ReduceAction651___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -37149,22 +37149,22 @@ void parser___ReduceAction651___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*tcommentnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tcommentnode2*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction651___action, LOCATE_parser, 20173); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tcommentnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*tcommentnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tcommentnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*tcommentnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*tcommentnode2*/)( variable[8] /*tcommentnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*tcommentnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*tcommentnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(135)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(135)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1334: while(false);
   tracehead = trace.prev;
   return;
@@ -37191,20 +37191,20 @@ void parser___ReduceAction652___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
   variable[6] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[5] = variable[6];
   variable[6] =  variable[4] /*nodearraylist1*/;
   variable[7] = TAG_Bool(( variable[6] /*teolnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*teolnode1*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
   if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction652___action, LOCATE_parser, 20197); nit_exit(1);}
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*teolnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*teolnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*teolnode1*/,COLOR_kernel___Object_____eqeq))( variable[6] /*teolnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*teolnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*teolnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*teolnode1*/)( variable[6] /*teolnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[5] /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable[5] /*listnode2*/,  variable[6] /*teolnode1*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*teolnode1*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  variable[7] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(136)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(136)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1336: while(false);
   tracehead = trace.prev;
   return;
@@ -37231,9 +37231,9 @@ void parser___ReduceAction653___action(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] =  NIT_NULL /*null*/;
-  variable[5] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[4] = variable[5];
-  variable[6] = ((parser___Parser___pop_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___pop))( variable[1] /*p*/) /*Parser::pop*/;
+  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
   variable[5] = variable[6];
   variable[7] = NEW_Array_array___Array___init(); /*new Array[Object]*/
   variable[6] = variable[7];
@@ -37243,22 +37243,22 @@ void parser___ReduceAction653___action(val_t  self, val_t  param0) {
   variable[8] =  variable[4] /*nodearraylist2*/;
   variable[9] = TAG_Bool(( variable[8] /*teolnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*teolnode2*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
   if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction653___action, LOCATE_parser, 20217); nit_exit(1);}
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    variable[9] = ((array___AbstractArray___is_empty_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
+    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable[9])) { /*if*/
       variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*teolnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*teolnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*teolnode2*/,COLOR_kernel___Object_____eqeq))( variable[8] /*teolnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*teolnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*teolnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*teolnode2*/)( variable[8] /*teolnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable[6] /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable[6] /*listnode3*/,  variable[8] /*teolnode2*/) /*AbstractArray::add*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*teolnode2*/) /*AbstractArray::add*/;
   }
   variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  variable[9] = ((parser___Parser___go_to_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___go_to))( variable[1] /*p*/,  TAG_Int(136)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable[1] /*p*/,COLOR_parser___Parser___push))( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
+  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(136)) /*Parser::go_to*/;
+  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
   return_label1338: while(false);
   tracehead = trace.prev;
   return;