new c_src
[nit.git] / c_src / parser_prod._sep.c
index 1fb13b0..69af4aa 100644 (file)
@@ -28,7 +28,7 @@ void parser_prod___PNode___remove_child(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] = variable[0];
-  ((parser_prod___PNode___replace_child_t)CALL(variable[3],COLOR_parser_prod___PNode___replace_child))(variable[3],  variable[1] /*child*/,  NIT_NULL /*null*/) /*PNode::replace_child*/;
+  CALL_parser_prod___PNode___replace_child(variable[3])(variable[3],  variable[1] /*child*/,  NIT_NULL /*null*/) /*PNode::replace_child*/;
   return_label0: while(false);
   tracehead = trace.prev;
   return;
@@ -55,12 +55,12 @@ void parser_prod___PNode___replace_with(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_prod___PNode____parent(variable[3]) /*PNode::_parent*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_prod___PNode____parent(variable[3]) /*PNode::_parent*/;
     variable[4] = variable[0];
-    ((parser_prod___PNode___replace_child_t)CALL(variable[3],COLOR_parser_prod___PNode___replace_child))(variable[3], variable[4],  variable[1] /*node*/) /*PNode::replace_child*/;
+    CALL_parser_prod___PNode___replace_child(variable[3])(variable[3], variable[4],  variable[1] /*node*/) /*PNode::replace_child*/;
   }
   return_label1: while(false);
   tracehead = trace.prev;
@@ -123,23 +123,24 @@ void parser_prod___PNode___printl(val_t  self, val_t  param0) {
   variable[0] =  self;
   variable[1] =  param0;
   variable[3] = variable[0];
-  variable[4] = NEW_String_string___String___init(); /*new String*/
+  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
   variable[5] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
   variable[6] = variable[5];
-  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[6]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
   variable[7] = variable[0];
-  variable[7] = ((parser_prod___PNode___locate_t)CALL(variable[7],COLOR_parser_prod___PNode___locate))(variable[7]) /*PNode::locate*/;
+  variable[7] = CALL_parser_prod___PNode___locate(variable[7])(variable[7]) /*PNode::locate*/;
   variable[8] = variable[7];
-  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[8]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[8]) /*AbstractArray::add*/;
   variable[9] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
   variable[10] = variable[9];
-  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[10]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[10]) /*AbstractArray::add*/;
   variable[11] =  variable[1] /*str*/;
-  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[11]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[11]) /*AbstractArray::add*/;
   variable[12] = NEW_String_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
   variable[13] = variable[12];
-  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[13]) /*String::append*/;
-  ((file___Object___print_t)CALL(variable[3],COLOR_file___Object___print))(variable[3], variable[4]) /*Object::print*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[13]) /*AbstractArray::add*/;
+  variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
+  CALL_file___Object___print(variable[3])(variable[3], variable[4]) /*Object::print*/;
   return_label2: while(false);
   tracehead = trace.prev;
   return;
@@ -188,33 +189,34 @@ val_t parser_prod___Token___locate(val_t  self) {
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   variable[0] =  self;
-  variable[2] = NEW_String_string___String___init(); /*new String*/
+  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
   variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
   variable[4] = variable[3];
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[4]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[4]) /*AbstractArray::add*/;
   variable[5] = variable[0];
-  variable[5] = ((lexer___Token___filename_t)CALL(variable[5],COLOR_lexer___Token___filename))(variable[5]) /*Token::filename*/;
+  variable[5] = CALL_lexer___Token___filename(variable[5])(variable[5]) /*Token::filename*/;
   variable[6] = variable[5];
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[6]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[6]) /*AbstractArray::add*/;
   variable[7] = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)); /*new String*/
   variable[8] = variable[7];
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[8]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[8]) /*AbstractArray::add*/;
   variable[9] = variable[0];
-  variable[9] = ((lexer___Token___line_t)CALL(variable[9],COLOR_lexer___Token___line))(variable[9]) /*Token::line*/;
+  variable[9] = CALL_lexer___Token___line(variable[9])(variable[9]) /*Token::line*/;
   variable[10] = variable[9];
-  variable[10] = ((string___String___to_s_t)CALL(variable[10],COLOR_string___Object___to_s))(variable[10]) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[10]) /*String::append*/;
+  variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[10]) /*AbstractArray::add*/;
   variable[11] = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)); /*new String*/
   variable[12] = variable[11];
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[12]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[12]) /*AbstractArray::add*/;
   variable[13] = variable[0];
-  variable[13] = ((lexer___Token___pos_t)CALL(variable[13],COLOR_lexer___Token___pos))(variable[13]) /*Token::pos*/;
+  variable[13] = CALL_lexer___Token___pos(variable[13])(variable[13]) /*Token::pos*/;
   variable[14] = variable[13];
-  variable[14] = ((string___String___to_s_t)CALL(variable[14],COLOR_string___Object___to_s))(variable[14]) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[14]) /*String::append*/;
+  variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[14]) /*AbstractArray::add*/;
   variable[15] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
   variable[16] = variable[15];
-  ((string___String___append_t)CALL(variable[2],COLOR_abstract_collection___IndexedCollection___append))(variable[2], variable[16]) /*String::append*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[16]) /*AbstractArray::add*/;
+  variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
   variable[1] = variable[2];
   goto return_label6;
   return_label6: while(false);
@@ -229,7 +231,7 @@ val_t parser_prod___Token___line_number(val_t  self) {
   trace.file = LOCATE_parser_prod;
   variable[0] =  self;
   variable[2] = variable[0];
-  variable[2] = ((lexer___Token___line_t)CALL(variable[2],COLOR_lexer___Token___line))(variable[2]) /*Token::line*/;
+  variable[2] = CALL_lexer___Token___line(variable[2])(variable[2]) /*Token::line*/;
   variable[1] = variable[2];
   goto return_label7;
   return_label7: while(false);
@@ -244,15 +246,15 @@ void parser_prod___Prod___replace_with(val_t  self, val_t  param0) {
   trace.file = LOCATE_parser_prod;
   variable[0] =  self;
   variable[1] =  param0;
-  ((parser_prod___Prod___replace_with_t)CALL(variable[0],COLOR_SUPER_parser_prod___Prod___replace_with))(variable[0], variable[1]) /*super Prod::replace_with*/;
+  CALL_SUPER_parser_prod___Prod___replace_with(variable[0])(variable[0], variable[1]) /*super Prod::replace_with*/;
   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_prod___Prod___replace_with, LOCATE_parser_prod, 86); nit_exit(1);}
   variable[3] = variable[0];
-  variable[3] = ((parser_prod___Prod___first_token_t)CALL(variable[3],COLOR_parser_prod___Prod___first_token))(variable[3]) /*Prod::first_token*/;
-  ((parser_prod___Prod___first_token__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___Prod___first_token__eq))( variable[1] /*n*/, variable[3]) /*Prod::first_token=*/;
+  variable[3] = CALL_parser_prod___Prod___first_token(variable[3])(variable[3]) /*Prod::first_token*/;
+  CALL_parser_prod___Prod___first_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::first_token=*/;
   variable[3] = variable[0];
-  variable[3] = ((parser_prod___Prod___last_token_t)CALL(variable[3],COLOR_parser_prod___Prod___last_token))(variable[3]) /*Prod::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=*/;
+  variable[3] = CALL_parser_prod___Prod___last_token(variable[3])(variable[3]) /*Prod::last_token*/;
+  CALL_parser_prod___Prod___last_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::last_token=*/;
   return_label8: while(false);
   tracehead = trace.prev;
   return;
@@ -265,79 +267,81 @@ val_t parser_prod___Prod___locate(val_t  self) {
   trace.file = LOCATE_parser_prod;
   variable[0] =  self;
   variable[2] = variable[0];
-  variable[2] = ((parser_prod___Prod___first_token_t)CALL(variable[2],COLOR_parser_prod___Prod___first_token))(variable[2]) /*Prod::first_token*/;
-  variable[2] = TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[2],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[2],COLOR_kernel___Object_____eqeq))(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))));
+  variable[2] = CALL_parser_prod___Prod___first_token(variable[2])(variable[2]) /*Prod::first_token*/;
+  variable[2] = TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[2])) { /*if*/
     variable[2] = NEW_String_string___String___with_native(BOX_NativeString("????"), TAG_Int(4)); /*new String*/
     variable[1] = variable[2];
     goto return_label9;
   }
   variable[3] = variable[0];
-  variable[3] = ((parser_prod___Prod___last_token_t)CALL(variable[3],COLOR_parser_prod___Prod___last_token))(variable[3]) /*Prod::last_token*/;
-  variable[3] = ((lexer___Token___pos_t)CALL(variable[3],COLOR_lexer___Token___pos))(variable[3]) /*Token::pos*/;
+  variable[3] = CALL_parser_prod___Prod___last_token(variable[3])(variable[3]) /*Prod::last_token*/;
+  variable[3] = CALL_lexer___Token___pos(variable[3])(variable[3]) /*Token::pos*/;
   variable[4] = variable[0];
-  variable[4] = ((parser_prod___Prod___last_token_t)CALL(variable[4],COLOR_parser_prod___Prod___last_token))(variable[4]) /*Prod::last_token*/;
-  variable[4] = ((lexer___Token___text_t)CALL(variable[4],COLOR_lexer___Token___text))(variable[4]) /*Token::text*/;
-  variable[4] = ((array___AbstractArray___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*AbstractArray::length*/;
+  variable[4] = CALL_parser_prod___Prod___last_token(variable[4])(variable[4]) /*Prod::last_token*/;
+  variable[4] = CALL_lexer___Token___text(variable[4])(variable[4]) /*Token::text*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArray::length*/;
   variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int(variable[4]));
   variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1)));
   variable[2] = variable[3];
   variable[3] = variable[0];
-  variable[3] = ((parser_prod___Prod___first_token_t)CALL(variable[3],COLOR_parser_prod___Prod___first_token))(variable[3]) /*Prod::first_token*/;
-  variable[3] = ((lexer___Token___line_t)CALL(variable[3],COLOR_lexer___Token___line))(variable[3]) /*Token::line*/;
+  variable[3] = CALL_parser_prod___Prod___first_token(variable[3])(variable[3]) /*Prod::first_token*/;
+  variable[3] = CALL_lexer___Token___line(variable[3])(variable[3]) /*Token::line*/;
   variable[4] = variable[0];
-  variable[4] = ((parser_prod___Prod___last_token_t)CALL(variable[4],COLOR_parser_prod___Prod___last_token))(variable[4]) /*Prod::last_token*/;
-  variable[4] = ((lexer___Token___line_t)CALL(variable[4],COLOR_lexer___Token___line))(variable[4]) /*Token::line*/;
+  variable[4] = CALL_parser_prod___Prod___last_token(variable[4])(variable[4]) /*Prod::last_token*/;
+  variable[4] = CALL_lexer___Token___line(variable[4])(variable[4]) /*Token::line*/;
   variable[3] = TAG_Bool((variable[3])==(variable[4]));
   if (UNTAG_Bool(variable[3])) { /*if*/
-    variable[3] = NEW_String_string___String___init(); /*new String*/
+    variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)); /*new Array[String]*/
     variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
     variable[5] = variable[4];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[5]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[5]) /*AbstractArray::add*/;
     variable[6] = variable[0];
-    variable[6] = ((parser_prod___Prod___first_token_t)CALL(variable[6],COLOR_parser_prod___Prod___first_token))(variable[6]) /*Prod::first_token*/;
-    variable[6] = ((parser_prod___Token___locate_t)CALL(variable[6],COLOR_parser_prod___PNode___locate))(variable[6]) /*Token::locate*/;
+    variable[6] = CALL_parser_prod___Prod___first_token(variable[6])(variable[6]) /*Prod::first_token*/;
+    variable[6] = CALL_parser_prod___PNode___locate(variable[6])(variable[6]) /*Token::locate*/;
     variable[7] = variable[6];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[7]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[7]) /*AbstractArray::add*/;
     variable[8] = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)); /*new String*/
     variable[9] = variable[8];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[9]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[9]) /*AbstractArray::add*/;
     variable[10] =  variable[2] /*lastpos*/;
-    variable[10] = ((string___String___to_s_t)CALL(variable[10],COLOR_string___Object___to_s))(variable[10]) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[10]) /*String::append*/;
+    variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[10]) /*AbstractArray::add*/;
     variable[11] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
     variable[12] = variable[11];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[12]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[12]) /*AbstractArray::add*/;
+    variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
     variable[1] = variable[3];
     goto return_label9;
   } else { /*if*/
-    variable[3] = NEW_String_string___String___init(); /*new String*/
+    variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(7)); /*new Array[String]*/
     variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
     variable[5] = variable[4];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[5]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[5]) /*AbstractArray::add*/;
     variable[6] = variable[0];
-    variable[6] = ((parser_prod___Prod___first_token_t)CALL(variable[6],COLOR_parser_prod___Prod___first_token))(variable[6]) /*Prod::first_token*/;
-    variable[6] = ((parser_prod___Token___locate_t)CALL(variable[6],COLOR_parser_prod___PNode___locate))(variable[6]) /*Token::locate*/;
+    variable[6] = CALL_parser_prod___Prod___first_token(variable[6])(variable[6]) /*Prod::first_token*/;
+    variable[6] = CALL_parser_prod___PNode___locate(variable[6])(variable[6]) /*Token::locate*/;
     variable[7] = variable[6];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[7]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[7]) /*AbstractArray::add*/;
     variable[8] = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)); /*new String*/
     variable[9] = variable[8];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[9]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[9]) /*AbstractArray::add*/;
     variable[10] = variable[0];
-    variable[10] = ((parser_prod___Prod___last_token_t)CALL(variable[10],COLOR_parser_prod___Prod___last_token))(variable[10]) /*Prod::last_token*/;
-    variable[10] = ((lexer___Token___line_t)CALL(variable[10],COLOR_lexer___Token___line))(variable[10]) /*Token::line*/;
+    variable[10] = CALL_parser_prod___Prod___last_token(variable[10])(variable[10]) /*Prod::last_token*/;
+    variable[10] = CALL_lexer___Token___line(variable[10])(variable[10]) /*Token::line*/;
     variable[11] = variable[10];
-    variable[11] = ((string___String___to_s_t)CALL(variable[11],COLOR_string___Object___to_s))(variable[11]) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[11]) /*String::append*/;
+    variable[11] = CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[11]) /*AbstractArray::add*/;
     variable[12] = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)); /*new String*/
     variable[13] = variable[12];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[13]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[13]) /*AbstractArray::add*/;
     variable[14] =  variable[2] /*lastpos*/;
-    variable[14] = ((string___String___to_s_t)CALL(variable[14],COLOR_string___Object___to_s))(variable[14]) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[14]) /*String::append*/;
+    variable[14] = CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[14]) /*AbstractArray::add*/;
     variable[15] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
     variable[16] = variable[15];
-    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[16]) /*String::append*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[16]) /*AbstractArray::add*/;
+    variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
     variable[1] = variable[3];
     goto return_label9;
   }
@@ -353,12 +357,12 @@ val_t parser_prod___Prod___line_number(val_t  self) {
   trace.file = LOCATE_parser_prod;
   variable[0] =  self;
   variable[2] = variable[0];
-  variable[2] = ((parser_prod___Prod___first_token_t)CALL(variable[2],COLOR_parser_prod___Prod___first_token))(variable[2]) /*Prod::first_token*/;
-  variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[2],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[2],COLOR_kernel___Object_____eqeq))(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[2] = CALL_parser_prod___Prod___first_token(variable[2])(variable[2]) /*Prod::first_token*/;
+  variable[2] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[2] ==  NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[2])) { /*if*/
     variable[2] = variable[0];
-    variable[2] = ((parser_prod___Prod___first_token_t)CALL(variable[2],COLOR_parser_prod___Prod___first_token))(variable[2]) /*Prod::first_token*/;
-    variable[2] = ((lexer___Token___line_t)CALL(variable[2],COLOR_lexer___Token___line))(variable[2]) /*Token::line*/;
+    variable[2] = CALL_parser_prod___Prod___first_token(variable[2])(variable[2]) /*Prod::first_token*/;
+    variable[2] = CALL_lexer___Token___line(variable[2])(variable[2]) /*Token::line*/;
     variable[1] = variable[2];
     goto return_label10;
   } else { /*if*/
@@ -438,10 +442,10 @@ void parser_prod___AModule___n_packagedecl__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AModule____n_packagedecl(variable[3]) /*AModule::_n_packagedecl*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label11: while(false);
   tracehead = trace.prev;
@@ -456,16 +460,16 @@ void parser_prod___AModule___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 147); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AModule____n_packagedecl(variable[4]) /*AModule::_n_packagedecl*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___replace_child, LOCATE_parser_prod, 151); nit_exit(1);}
       variable[4] = variable[0];
@@ -478,74 +482,74 @@ void parser_prod___AModule___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[4]) /*AModule::_n_imports*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[7]) /*AModule::_n_imports*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AModule___replace_child, LOCATE_parser_prod, 161); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[7]) /*AModule::_n_imports*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AModule____n_imports(variable[7]) /*AModule::_n_imports*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label12;
     }
     continue_13: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_13: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[4]) /*AModule::_n_classdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[7]) /*AModule::_n_classdefs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AModule___replace_child, LOCATE_parser_prod, 173); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[7]) /*AModule::_n_classdefs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AModule____n_classdefs(variable[7]) /*AModule::_n_classdefs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label12;
     }
     continue_14: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_14: while(0);
   return_label12: while(false);
@@ -562,36 +566,36 @@ void parser_prod___AModule___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[3]) /*AModule::_n_packagedecl*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[3]) /*AModule::_n_packagedecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AModule____n_imports(variable[3]) /*AModule::_n_imports*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_16: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_16: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AModule____n_classdefs(variable[3]) /*AModule::_n_classdefs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_17: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_17: while(0);
   return_label15: while(false);
@@ -608,23 +612,23 @@ void parser_prod___AModule___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[3]) /*AModule::_n_packagedecl*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AModule____n_packagedecl(variable[3]) /*AModule::_n_packagedecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[4]) /*AModule::_n_imports*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AModule____n_imports(variable[4]) /*AModule::_n_imports*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_19: while(0);
@@ -632,15 +636,15 @@ void parser_prod___AModule___visit_all_reverse(val_t  self, val_t  param0) {
   break_19: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[4]) /*AModule::_n_classdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AModule____n_classdefs(variable[4]) /*AModule::_n_classdefs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_20: while(0);
@@ -675,52 +679,52 @@ void parser_prod___AModule___init_amodule(val_t  self, val_t  param0, val_t  par
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AModule].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AModule___empty_init_t)CALL(variable[5],COLOR_parser_prod___AModule___empty_init))(variable[5], init_table /*YYY*/) /*AModule::empty_init*/;
+  CALL_parser_prod___AModule___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AModule::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AModule____n_packagedecl(variable[5]) /*AModule::_n_packagedecl*/ =  variable[1] /*n_packagedecl*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_packagedecl*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_packagedecl*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_packagedecl*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_packagedecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_packagedecl*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_packagedecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_packagedecl*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_packagedecl*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_packagedecl*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_packagedecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_packagedecl*/)( variable[1] /*n_packagedecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_packagedecl*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_packagedecl*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_packagedecl*/)( variable[1] /*n_packagedecl*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PImport]*/
   ATTR_parser_nodes___AModule____n_imports(variable[5]) /*AModule::_n_imports*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_imports*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_imports*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_imports*/)( variable[2] /*n_imports*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
     if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AModule___init_amodule, LOCATE_parser_prod, 133); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___AModule____n_imports(variable[8]) /*AModule::_n_imports*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_23: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_23: while(0);
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PClassdef]*/
   ATTR_parser_nodes___AModule____n_classdefs(variable[5]) /*AModule::_n_classdefs*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_classdefs*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_classdefs*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_classdefs*/)( variable[3] /*n_classdefs*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, 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_prod___AModule___init_amodule, LOCATE_parser_prod, 139); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___AModule____n_classdefs(variable[8]) /*AModule::_n_classdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_24: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_24: while(0);
   return_label22: while(false);
@@ -738,10 +742,10 @@ void parser_prod___APackagedecl___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_doc(variable[3]) /*APackagedecl::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label25: while(false);
   tracehead = trace.prev;
@@ -757,10 +761,10 @@ void parser_prod___APackagedecl___n_kwpackage__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[3]) /*APackagedecl::_n_kwpackage*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label26: while(false);
   tracehead = trace.prev;
@@ -776,10 +780,10 @@ void parser_prod___APackagedecl___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_id(variable[3]) /*APackagedecl::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label27: while(false);
   tracehead = trace.prev;
@@ -794,16 +798,16 @@ void parser_prod___APackagedecl___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 266); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APackagedecl____n_doc(variable[4]) /*APackagedecl::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 270); nit_exit(1);}
       variable[4] = variable[0];
@@ -816,12 +820,12 @@ void parser_prod___APackagedecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[4]) /*APackagedecl::_n_kwpackage*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwpackage, ID_TKwpackage)) /*cast TKwpackage*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 280); nit_exit(1);}
       variable[4] = variable[0];
@@ -834,12 +838,12 @@ void parser_prod___APackagedecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APackagedecl____n_id(variable[4]) /*APackagedecl::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APackagedecl___replace_child, LOCATE_parser_prod, 290); nit_exit(1);}
       variable[4] = variable[0];
@@ -864,27 +868,27 @@ void parser_prod___APackagedecl___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[3]) /*APackagedecl::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[3]) /*APackagedecl::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[3]) /*APackagedecl::_n_kwpackage*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[3]) /*APackagedecl::_n_kwpackage*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[3]) /*APackagedecl::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[3]) /*APackagedecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label29: while(false);
   tracehead = trace.prev;
@@ -900,27 +904,27 @@ void parser_prod___APackagedecl___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[3]) /*APackagedecl::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_doc(variable[3]) /*APackagedecl::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[3]) /*APackagedecl::_n_kwpackage*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[3]) /*APackagedecl::_n_kwpackage*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[3]) /*APackagedecl::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APackagedecl____n_id(variable[3]) /*APackagedecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label30: while(false);
   tracehead = trace.prev;
@@ -951,27 +955,27 @@ void parser_prod___APackagedecl___init_apackagedecl(val_t  self, val_t  param0,
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___APackagedecl___empty_init_t)CALL(variable[5],COLOR_parser_prod___APackagedecl___empty_init))(variable[5], init_table /*YYY*/) /*APackagedecl::empty_init*/;
+  CALL_parser_prod___APackagedecl___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*APackagedecl::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_doc(variable[5]) /*APackagedecl::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[5]) /*APackagedecl::_n_kwpackage*/ =  variable[2] /*n_kwpackage*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwpackage*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwpackage*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwpackage*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwpackage*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwpackage*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwpackage*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwpackage*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwpackage*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwpackage*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwpackage*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwpackage*/)( variable[2] /*n_kwpackage*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwpackage*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwpackage*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwpackage*/)( variable[2] /*n_kwpackage*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___APackagedecl____n_id(variable[5]) /*APackagedecl::_n_id*/ =  variable[3] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   return_label32: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
@@ -988,10 +992,10 @@ void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AImport____n_visibility(variable[3]) /*AImport::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label33: while(false);
   tracehead = trace.prev;
@@ -1007,10 +1011,10 @@ void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AImport____n_kwimport(variable[3]) /*AImport::_n_kwimport*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label34: while(false);
   tracehead = trace.prev;
@@ -1026,10 +1030,10 @@ void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AImport____n_id(variable[3]) /*AImport::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label35: while(false);
   tracehead = trace.prev;
@@ -1044,16 +1048,16 @@ void parser_prod___AImport___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 373); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AImport____n_visibility(variable[4]) /*AImport::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 377); nit_exit(1);}
       variable[4] = variable[0];
@@ -1066,12 +1070,12 @@ void parser_prod___AImport___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AImport____n_kwimport(variable[4]) /*AImport::_n_kwimport*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 387); nit_exit(1);}
       variable[4] = variable[0];
@@ -1084,12 +1088,12 @@ void parser_prod___AImport___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AImport____n_id(variable[4]) /*AImport::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImport___replace_child, LOCATE_parser_prod, 397); nit_exit(1);}
       variable[4] = variable[0];
@@ -1114,27 +1118,27 @@ void parser_prod___AImport___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[3]) /*AImport::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[3]) /*AImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[3]) /*AImport::_n_kwimport*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[3]) /*AImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_id(variable[3]) /*AImport::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_id(variable[3]) /*AImport::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label37: while(false);
   tracehead = trace.prev;
@@ -1150,27 +1154,27 @@ void parser_prod___AImport___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[3]) /*AImport::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_visibility(variable[3]) /*AImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[3]) /*AImport::_n_kwimport*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_kwimport(variable[3]) /*AImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AImport____n_id(variable[3]) /*AImport::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AImport____n_id(variable[3]) /*AImport::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label38: while(false);
   tracehead = trace.prev;
@@ -1201,27 +1205,27 @@ void parser_prod___AImport___init_aimport(val_t  self, val_t  param0, val_t  par
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AImport___empty_init_t)CALL(variable[5],COLOR_parser_prod___AImport___empty_init))(variable[5], init_table /*YYY*/) /*AImport::empty_init*/;
+  CALL_parser_prod___AImport___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AImport::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AImport____n_visibility(variable[5]) /*AImport::_n_visibility*/ =  variable[1] /*n_visibility*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_visibility*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AImport____n_kwimport(variable[5]) /*AImport::_n_kwimport*/ =  variable[2] /*n_kwimport*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwimport*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwimport*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwimport*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwimport*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AImport____n_id(variable[5]) /*AImport::_n_id*/ =  variable[3] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   return_label40: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImport].i] = 1;
@@ -1238,10 +1242,10 @@ void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANoImport____n_visibility(variable[3]) /*ANoImport::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label41: while(false);
   tracehead = trace.prev;
@@ -1257,10 +1261,10 @@ void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANoImport____n_kwimport(variable[3]) /*ANoImport::_n_kwimport*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label42: while(false);
   tracehead = trace.prev;
@@ -1276,10 +1280,10 @@ void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANoImport____n_kwend(variable[3]) /*ANoImport::_n_kwend*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label43: while(false);
   tracehead = trace.prev;
@@ -1294,16 +1298,16 @@ void parser_prod___ANoImport___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 480); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANoImport____n_visibility(variable[4]) /*ANoImport::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 484); nit_exit(1);}
       variable[4] = variable[0];
@@ -1316,12 +1320,12 @@ void parser_prod___ANoImport___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[4]) /*ANoImport::_n_kwimport*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 494); nit_exit(1);}
       variable[4] = variable[0];
@@ -1334,12 +1338,12 @@ void parser_prod___ANoImport___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANoImport____n_kwend(variable[4]) /*ANoImport::_n_kwend*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANoImport___replace_child, LOCATE_parser_prod, 504); nit_exit(1);}
       variable[4] = variable[0];
@@ -1364,27 +1368,27 @@ void parser_prod___ANoImport___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[3]) /*ANoImport::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[3]) /*ANoImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[3]) /*ANoImport::_n_kwimport*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[3]) /*ANoImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[3]) /*ANoImport::_n_kwend*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[3]) /*ANoImport::_n_kwend*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label45: while(false);
   tracehead = trace.prev;
@@ -1400,27 +1404,27 @@ void parser_prod___ANoImport___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[3]) /*ANoImport::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_visibility(variable[3]) /*ANoImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[3]) /*ANoImport::_n_kwimport*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_kwimport(variable[3]) /*ANoImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[3]) /*ANoImport::_n_kwend*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANoImport____n_kwend(variable[3]) /*ANoImport::_n_kwend*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label46: while(false);
   tracehead = trace.prev;
@@ -1451,27 +1455,27 @@ void parser_prod___ANoImport___init_anoimport(val_t  self, val_t  param0, val_t
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___ANoImport___empty_init_t)CALL(variable[5],COLOR_parser_prod___ANoImport___empty_init))(variable[5], init_table /*YYY*/) /*ANoImport::empty_init*/;
+  CALL_parser_prod___ANoImport___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*ANoImport::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___ANoImport____n_visibility(variable[5]) /*ANoImport::_n_visibility*/ =  variable[1] /*n_visibility*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_visibility*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_visibility*/)( variable[1] /*n_visibility*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___ANoImport____n_kwimport(variable[5]) /*ANoImport::_n_kwimport*/ =  variable[2] /*n_kwimport*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwimport*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwimport*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwimport*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwimport*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwimport*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwimport*/)( variable[2] /*n_kwimport*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___ANoImport____n_kwend(variable[5]) /*ANoImport::_n_kwend*/ =  variable[3] /*n_kwend*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwend*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwend*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwend*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwend*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwend*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_kwend*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwend*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwend*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwend*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwend*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwend*/)( variable[3] /*n_kwend*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_kwend*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_kwend*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwend*/)( variable[3] /*n_kwend*/, variable[5]) /*PNode::parent=*/;
   }
   return_label48: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANoImport].i] = 1;
@@ -1487,7 +1491,7 @@ void parser_prod___APublicVisibility___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APublicVisibility___replace_child, LOCATE_parser_prod, 550); nit_exit(1);}
   return_label49: while(false);
   tracehead = trace.prev;
@@ -1539,7 +1543,7 @@ void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int*
   variable[0] =  self;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
   variable[2] = variable[0];
-  ((parser_prod___APublicVisibility___empty_init_t)CALL(variable[2],COLOR_parser_prod___APublicVisibility___empty_init))(variable[2], init_table /*YYY*/) /*APublicVisibility::empty_init*/;
+  CALL_parser_prod___APublicVisibility___empty_init(variable[2])(variable[2], init_table /*YYY*/) /*APublicVisibility::empty_init*/;
   return_label53: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
   tracehead = trace.prev;
@@ -1555,10 +1559,10 @@ void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label54: while(false);
   tracehead = trace.prev;
@@ -1573,16 +1577,16 @@ void parser_prod___APrivateVisibility___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APrivateVisibility___replace_child, LOCATE_parser_prod, 585); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[4]) /*APrivateVisibility::_n_kwprivate*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APrivateVisibility___replace_child, LOCATE_parser_prod, 589); nit_exit(1);}
       variable[4] = variable[0];
@@ -1607,11 +1611,11 @@ void parser_prod___APrivateVisibility___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label56: while(false);
   tracehead = trace.prev;
@@ -1627,11 +1631,11 @@ void parser_prod___APrivateVisibility___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label57: while(false);
   tracehead = trace.prev;
@@ -1660,13 +1664,13 @@ void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t  self, val
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___APrivateVisibility___empty_init_t)CALL(variable[3],COLOR_parser_prod___APrivateVisibility___empty_init))(variable[3], init_table /*YYY*/) /*APrivateVisibility::empty_init*/;
+  CALL_parser_prod___APrivateVisibility___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*APrivateVisibility::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[3]) /*APrivateVisibility::_n_kwprivate*/ =  variable[1] /*n_kwprivate*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprivate*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprivate*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwprivate*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprivate*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwprivate*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwprivate*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprivate*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprivate*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwprivate*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprivate*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwprivate*/)( variable[1] /*n_kwprivate*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwprivate*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwprivate*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwprivate*/)( variable[1] /*n_kwprivate*/, variable[3]) /*PNode::parent=*/;
   }
   return_label59: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
@@ -1683,10 +1687,10 @@ void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label60: while(false);
   tracehead = trace.prev;
@@ -1701,16 +1705,16 @@ void parser_prod___AProtectedVisibility___replace_child(val_t  self, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AProtectedVisibility___replace_child, LOCATE_parser_prod, 636); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[4]) /*AProtectedVisibility::_n_kwprotected*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AProtectedVisibility___replace_child, LOCATE_parser_prod, 640); nit_exit(1);}
       variable[4] = variable[0];
@@ -1735,11 +1739,11 @@ void parser_prod___AProtectedVisibility___visit_all(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label62: while(false);
   tracehead = trace.prev;
@@ -1755,11 +1759,11 @@ void parser_prod___AProtectedVisibility___visit_all_reverse(val_t  self, val_t
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label63: while(false);
   tracehead = trace.prev;
@@ -1788,13 +1792,13 @@ void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t  self,
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AProtectedVisibility___empty_init_t)CALL(variable[3],COLOR_parser_prod___AProtectedVisibility___empty_init))(variable[3], init_table /*YYY*/) /*AProtectedVisibility::empty_init*/;
+  CALL_parser_prod___AProtectedVisibility___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AProtectedVisibility::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[3]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[1] /*n_kwprotected*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprotected*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprotected*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwprotected*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprotected*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwprotected*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwprotected*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwprotected*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwprotected*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwprotected*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwprotected*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwprotected*/)( variable[1] /*n_kwprotected*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwprotected*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwprotected*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwprotected*/)( variable[1] /*n_kwprotected*/, variable[3]) /*PNode::parent=*/;
   }
   return_label65: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
@@ -1811,10 +1815,10 @@ void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label66: while(false);
   tracehead = trace.prev;
@@ -1829,16 +1833,16 @@ void parser_prod___AIntrudeVisibility___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntrudeVisibility___replace_child, LOCATE_parser_prod, 687); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[4]) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntrudeVisibility___replace_child, LOCATE_parser_prod, 691); nit_exit(1);}
       variable[4] = variable[0];
@@ -1863,11 +1867,11 @@ void parser_prod___AIntrudeVisibility___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label68: while(false);
   tracehead = trace.prev;
@@ -1883,11 +1887,11 @@ void parser_prod___AIntrudeVisibility___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label69: while(false);
   tracehead = trace.prev;
@@ -1916,13 +1920,13 @@ void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t  self, val
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AIntrudeVisibility___empty_init_t)CALL(variable[3],COLOR_parser_prod___AIntrudeVisibility___empty_init))(variable[3], init_table /*YYY*/) /*AIntrudeVisibility::empty_init*/;
+  CALL_parser_prod___AIntrudeVisibility___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AIntrudeVisibility::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[3]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[1] /*n_kwintrude*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwintrude*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwintrude*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwintrude*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwintrude*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwintrude*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwintrude*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwintrude*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwintrude*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwintrude*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwintrude*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwintrude*/)( variable[1] /*n_kwintrude*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwintrude*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwintrude*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwintrude*/)( variable[1] /*n_kwintrude*/, variable[3]) /*PNode::parent=*/;
   }
   return_label71: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
@@ -1939,10 +1943,10 @@ void parser_prod___AClassdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClassdef____n_doc(variable[3]) /*AClassdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label72: while(false);
   tracehead = trace.prev;
@@ -1958,10 +1962,10 @@ void parser_prod___AClassdef___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClassdef____n_kwredef(variable[3]) /*AClassdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label73: while(false);
   tracehead = trace.prev;
@@ -1977,10 +1981,10 @@ void parser_prod___AClassdef___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClassdef____n_visibility(variable[3]) /*AClassdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label74: while(false);
   tracehead = trace.prev;
@@ -1996,10 +2000,10 @@ void parser_prod___AClassdef___n_classkind__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClassdef____n_classkind(variable[3]) /*AClassdef::_n_classkind*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label75: while(false);
   tracehead = trace.prev;
@@ -2015,10 +2019,10 @@ void parser_prod___AClassdef___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClassdef____n_id(variable[3]) /*AClassdef::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label76: while(false);
   tracehead = trace.prev;
@@ -2033,16 +2037,16 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 807); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_doc(variable[4]) /*AClassdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 811); nit_exit(1);}
       variable[4] = variable[0];
@@ -2055,12 +2059,12 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[4]) /*AClassdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 821); nit_exit(1);}
       variable[4] = variable[0];
@@ -2073,12 +2077,12 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_visibility(variable[4]) /*AClassdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 831); nit_exit(1);}
       variable[4] = variable[0];
@@ -2091,12 +2095,12 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_classkind(variable[4]) /*AClassdef::_n_classkind*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 841); nit_exit(1);}
       variable[4] = variable[0];
@@ -2109,12 +2113,12 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_id(variable[4]) /*AClassdef::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___replace_child, LOCATE_parser_prod, 851); nit_exit(1);}
       variable[4] = variable[0];
@@ -2127,110 +2131,110 @@ void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[4]) /*AClassdef::_n_formaldefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[7]) /*AClassdef::_n_formaldefs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AClassdef___replace_child, LOCATE_parser_prod, 861); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[7]) /*AClassdef::_n_formaldefs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[7]) /*AClassdef::_n_formaldefs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label77;
     }
     continue_78: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_78: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[4]) /*AClassdef::_n_superclasses*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[7]) /*AClassdef::_n_superclasses*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AClassdef___replace_child, LOCATE_parser_prod, 873); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[7]) /*AClassdef::_n_superclasses*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[7]) /*AClassdef::_n_superclasses*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label77;
     }
     continue_79: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_79: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[4]) /*AClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[7]) /*AClassdef::_n_propdefs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AClassdef___replace_child, LOCATE_parser_prod, 885); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[7]) /*AClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[7]) /*AClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label77;
     }
     continue_80: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_80: while(0);
   return_label77: while(false);
@@ -2247,81 +2251,81 @@ void parser_prod___AClassdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[3]) /*AClassdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[3]) /*AClassdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[3]) /*AClassdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[3]) /*AClassdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[3]) /*AClassdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[3]) /*AClassdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[3]) /*AClassdef::_n_classkind*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[3]) /*AClassdef::_n_classkind*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[3]) /*AClassdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[3]) /*AClassdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[3]) /*AClassdef::_n_formaldefs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_82: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_82: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[3]) /*AClassdef::_n_superclasses*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_83: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_83: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[3]) /*AClassdef::_n_propdefs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_84: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_84: while(0);
   return_label81: while(false);
@@ -2338,55 +2342,55 @@ void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[3]) /*AClassdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_doc(variable[3]) /*AClassdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[3]) /*AClassdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_kwredef(variable[3]) /*AClassdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[3]) /*AClassdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_visibility(variable[3]) /*AClassdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[3]) /*AClassdef::_n_classkind*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_classkind(variable[3]) /*AClassdef::_n_classkind*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[3]) /*AClassdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClassdef____n_id(variable[3]) /*AClassdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[4]) /*AClassdef::_n_formaldefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[4]) /*AClassdef::_n_formaldefs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_86: while(0);
@@ -2394,15 +2398,15 @@ void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   break_86: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[4]) /*AClassdef::_n_superclasses*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[4]) /*AClassdef::_n_superclasses*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_87: while(0);
@@ -2410,15 +2414,15 @@ void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   break_87: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[4]) /*AClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[4]) /*AClassdef::_n_propdefs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_88: while(0);
@@ -2458,100 +2462,100 @@ void parser_prod___AClassdef___init_aclassdef(val_t  self, val_t  param0, val_t
   variable[8] =  param7;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClassdef].i]) return;
   variable[10] = variable[0];
-  ((parser_prod___AClassdef___empty_init_t)CALL(variable[10],COLOR_parser_prod___AClassdef___empty_init))(variable[10], init_table /*YYY*/) /*AClassdef::empty_init*/;
+  CALL_parser_prod___AClassdef___empty_init(variable[10])(variable[10], init_table /*YYY*/) /*AClassdef::empty_init*/;
   variable[10] = variable[0];
   ATTR_parser_nodes___AClassdef____n_doc(variable[10]) /*AClassdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[10]) /*PNode::parent=*/;
   }
   variable[10] = variable[0];
   ATTR_parser_nodes___AClassdef____n_kwredef(variable[10]) /*AClassdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[10]) /*PNode::parent=*/;
   }
   variable[10] = variable[0];
   ATTR_parser_nodes___AClassdef____n_visibility(variable[10]) /*AClassdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[10]) /*PNode::parent=*/;
   }
   variable[10] = variable[0];
   ATTR_parser_nodes___AClassdef____n_classkind(variable[10]) /*AClassdef::_n_classkind*/ =  variable[4] /*n_classkind*/;
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_classkind*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_classkind*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_classkind*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_classkind*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_classkind*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_classkind*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_classkind*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_classkind*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_classkind*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_classkind*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_classkind*/)( variable[4] /*n_classkind*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_classkind*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_classkind*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_classkind*/)( variable[4] /*n_classkind*/, variable[10]) /*PNode::parent=*/;
   }
   variable[10] = variable[0];
   ATTR_parser_nodes___AClassdef____n_id(variable[10]) /*AClassdef::_n_id*/ =  variable[5] /*n_id*/;
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[10])) { /*if*/
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_id*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_id*/)( variable[5] /*n_id*/, variable[10]) /*PNode::parent=*/;
   }
   variable[10] = variable[0];
   variable[11] = NEW_List_list___List___init(); /*new List[PFormaldef]*/
   ATTR_parser_nodes___AClassdef____n_formaldefs(variable[10]) /*AClassdef::_n_formaldefs*/ = variable[11];
-  variable[10] = ((array___AbstractArray___iterator_t)CALL( variable[6] /*n_formaldefs*/,COLOR_abstract_collection___Collection___iterator))( variable[6] /*n_formaldefs*/) /*AbstractArray::iterator*/;
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[6] /*n_formaldefs*/)( variable[6] /*n_formaldefs*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(variable[10]) /*ArrayIterator::is_ok*/;
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[11])) break; /*for*/
-    variable[11] = ((array___ArrayIterator___item_t)CALL(variable[10],COLOR_abstract_collection___Iterator___item))(variable[10]) /*ArrayIterator::item*/;
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/;
     variable[12] = variable[11];
     variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
     if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 787); nit_exit(1);}
     variable[13] = variable[0];
     variable[13] = ATTR_parser_nodes___AClassdef____n_formaldefs(variable[13]) /*AClassdef::_n_formaldefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[13],COLOR_abstract_collection___SimpleCollection___add))(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
     variable[13] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[12] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
     continue_91: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(variable[10]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
   }
   break_91: while(0);
   variable[10] = variable[0];
   variable[11] = NEW_List_list___List___init(); /*new List[PSuperclass]*/
   ATTR_parser_nodes___AClassdef____n_superclasses(variable[10]) /*AClassdef::_n_superclasses*/ = variable[11];
-  variable[10] = ((array___AbstractArray___iterator_t)CALL( variable[7] /*n_superclasses*/,COLOR_abstract_collection___Collection___iterator))( variable[7] /*n_superclasses*/) /*AbstractArray::iterator*/;
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[7] /*n_superclasses*/)( variable[7] /*n_superclasses*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(variable[10]) /*ArrayIterator::is_ok*/;
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[11])) break; /*for*/
-    variable[11] = ((array___ArrayIterator___item_t)CALL(variable[10],COLOR_abstract_collection___Iterator___item))(variable[10]) /*ArrayIterator::item*/;
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/;
     variable[12] = variable[11];
     variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
     if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 793); nit_exit(1);}
     variable[13] = variable[0];
     variable[13] = ATTR_parser_nodes___AClassdef____n_superclasses(variable[13]) /*AClassdef::_n_superclasses*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[13],COLOR_abstract_collection___SimpleCollection___add))(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
     variable[13] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[12] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
     continue_92: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(variable[10]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
   }
   break_92: while(0);
   variable[10] = variable[0];
   variable[11] = NEW_List_list___List___init(); /*new List[PPropdef]*/
   ATTR_parser_nodes___AClassdef____n_propdefs(variable[10]) /*AClassdef::_n_propdefs*/ = variable[11];
-  variable[10] = ((array___AbstractArray___iterator_t)CALL( variable[8] /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable[8] /*n_propdefs*/) /*AbstractArray::iterator*/;
+  variable[10] = CALL_abstract_collection___Collection___iterator( variable[8] /*n_propdefs*/)( variable[8] /*n_propdefs*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(variable[10]) /*ArrayIterator::is_ok*/;
+    variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[11])) break; /*for*/
-    variable[11] = ((array___ArrayIterator___item_t)CALL(variable[10],COLOR_abstract_collection___Iterator___item))(variable[10]) /*ArrayIterator::item*/;
+    variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/;
     variable[12] = variable[11];
     variable[13] = TAG_Bool(( variable[12] /*n*/==NIT_NULL) || VAL_ISA( variable[12] /*n*/, 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_prod___AClassdef___init_aclassdef, LOCATE_parser_prod, 799); nit_exit(1);}
     variable[13] = variable[0];
     variable[13] = ATTR_parser_nodes___AClassdef____n_propdefs(variable[13]) /*AClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[13],COLOR_abstract_collection___SimpleCollection___add))(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[12] /*n*/) /*IndexedCollection::add*/;
     variable[13] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[12] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[12] /*n*/)( variable[12] /*n*/, variable[13]) /*PNode::parent=*/;
     continue_93: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(variable[10]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
   }
   break_93: while(0);
   return_label90: while(false);
@@ -2568,42 +2572,42 @@ void parser_prod___ATopClassdef___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATopClassdef___replace_child, LOCATE_parser_prod, 983); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[4]) /*ATopClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[7]) /*ATopClassdef::_n_propdefs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ATopClassdef___replace_child, LOCATE_parser_prod, 987); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[7]) /*ATopClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[7]) /*ATopClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label94;
     }
     continue_95: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_95: while(0);
   return_label94: while(false);
@@ -2620,15 +2624,15 @@ void parser_prod___ATopClassdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[3]) /*ATopClassdef::_n_propdefs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_97: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_97: while(0);
   return_label96: while(false);
@@ -2645,15 +2649,15 @@ void parser_prod___ATopClassdef___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[4]) /*ATopClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[4]) /*ATopClassdef::_n_propdefs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_99: while(0);
@@ -2686,25 +2690,25 @@ void parser_prod___ATopClassdef___init_atopclassdef(val_t  self, val_t  param0,
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ATopClassdef___empty_init_t)CALL(variable[3],COLOR_parser_prod___ATopClassdef___empty_init))(variable[3], init_table /*YYY*/) /*ATopClassdef::empty_init*/;
+  CALL_parser_prod___ATopClassdef___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ATopClassdef::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[PPropdef]*/
   ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[3]) /*ATopClassdef::_n_propdefs*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_propdefs*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_propdefs*/)( variable[1] /*n_propdefs*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
     if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATopClassdef___init_atopclassdef, LOCATE_parser_prod, 975); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___ATopClassdef____n_propdefs(variable[6]) /*ATopClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_102: 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_102: while(0);
   return_label101: while(false);
@@ -2721,42 +2725,42 @@ void parser_prod___AMainClassdef___replace_child(val_t  self, val_t  param0, val
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainClassdef___replace_child, LOCATE_parser_prod, 1035); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[4]) /*AMainClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[7]) /*AMainClassdef::_n_propdefs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AMainClassdef___replace_child, LOCATE_parser_prod, 1039); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[7]) /*AMainClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[7]) /*AMainClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label103;
     }
     continue_104: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_104: while(0);
   return_label103: while(false);
@@ -2773,15 +2777,15 @@ void parser_prod___AMainClassdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[3]) /*AMainClassdef::_n_propdefs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_106: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_106: while(0);
   return_label105: while(false);
@@ -2798,15 +2802,15 @@ void parser_prod___AMainClassdef___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[4]) /*AMainClassdef::_n_propdefs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[4]) /*AMainClassdef::_n_propdefs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_108: while(0);
@@ -2839,25 +2843,25 @@ void parser_prod___AMainClassdef___init_amainclassdef(val_t  self, val_t  param0
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AMainClassdef___empty_init_t)CALL(variable[3],COLOR_parser_prod___AMainClassdef___empty_init))(variable[3], init_table /*YYY*/) /*AMainClassdef::empty_init*/;
+  CALL_parser_prod___AMainClassdef___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AMainClassdef::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[PPropdef]*/
   ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[3]) /*AMainClassdef::_n_propdefs*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_propdefs*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_propdefs*/)( variable[1] /*n_propdefs*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
     if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainClassdef___init_amainclassdef, LOCATE_parser_prod, 1027); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___AMainClassdef____n_propdefs(variable[6]) /*AMainClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_111: 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_111: while(0);
   return_label110: while(false);
@@ -2875,10 +2879,10 @@ void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label112: while(false);
   tracehead = trace.prev;
@@ -2893,16 +2897,16 @@ void parser_prod___AConcreteClasskind___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteClasskind___replace_child, LOCATE_parser_prod, 1092); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[4]) /*AConcreteClasskind::_n_kwclass*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteClasskind___replace_child, LOCATE_parser_prod, 1096); nit_exit(1);}
       variable[4] = variable[0];
@@ -2927,11 +2931,11 @@ void parser_prod___AConcreteClasskind___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label114: while(false);
   tracehead = trace.prev;
@@ -2947,11 +2951,11 @@ void parser_prod___AConcreteClasskind___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label115: while(false);
   tracehead = trace.prev;
@@ -2980,13 +2984,13 @@ void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t  self, val
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AConcreteClasskind___empty_init_t)CALL(variable[3],COLOR_parser_prod___AConcreteClasskind___empty_init))(variable[3], init_table /*YYY*/) /*AConcreteClasskind::empty_init*/;
+  CALL_parser_prod___AConcreteClasskind___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AConcreteClasskind::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[3]) /*AConcreteClasskind::_n_kwclass*/ =  variable[1] /*n_kwclass*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwclass*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwclass*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwclass*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwclass*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwclass*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwclass*/)( variable[1] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwclass*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwclass*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwclass*/)( variable[1] /*n_kwclass*/, variable[3]) /*PNode::parent=*/;
   }
   return_label117: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
@@ -3003,10 +3007,10 @@ void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  par
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[3]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label118: while(false);
   tracehead = trace.prev;
@@ -3022,10 +3026,10 @@ void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[3]) /*AAbstractClasskind::_n_kwclass*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label119: while(false);
   tracehead = trace.prev;
@@ -3040,16 +3044,16 @@ void parser_prod___AAbstractClasskind___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1155); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[4]) /*AAbstractClasskind::_n_kwabstract*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1159); nit_exit(1);}
       variable[4] = variable[0];
@@ -3062,12 +3066,12 @@ void parser_prod___AAbstractClasskind___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[4]) /*AAbstractClasskind::_n_kwclass*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbstractClasskind___replace_child, LOCATE_parser_prod, 1169); nit_exit(1);}
       variable[4] = variable[0];
@@ -3092,19 +3096,19 @@ void parser_prod___AAbstractClasskind___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[3]) /*AAbstractClasskind::_n_kwabstract*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[3]) /*AAbstractClasskind::_n_kwabstract*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[3]) /*AAbstractClasskind::_n_kwclass*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[3]) /*AAbstractClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label121: while(false);
   tracehead = trace.prev;
@@ -3120,19 +3124,19 @@ void parser_prod___AAbstractClasskind___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[3]) /*AAbstractClasskind::_n_kwabstract*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[3]) /*AAbstractClasskind::_n_kwabstract*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[3]) /*AAbstractClasskind::_n_kwclass*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[3]) /*AAbstractClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label122: while(false);
   tracehead = trace.prev;
@@ -3162,20 +3166,20 @@ void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t  self, val
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AAbstractClasskind___empty_init_t)CALL(variable[4],COLOR_parser_prod___AAbstractClasskind___empty_init))(variable[4], init_table /*YYY*/) /*AAbstractClasskind::empty_init*/;
+  CALL_parser_prod___AAbstractClasskind___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AAbstractClasskind::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[4]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[1] /*n_kwabstract*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabstract*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabstract*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwabstract*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabstract*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwabstract*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwabstract*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabstract*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabstract*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwabstract*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabstract*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwabstract*/)( variable[1] /*n_kwabstract*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwabstract*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwabstract*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwabstract*/)( variable[1] /*n_kwabstract*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[4]) /*AAbstractClasskind::_n_kwclass*/ =  variable[2] /*n_kwclass*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwclass*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwclass*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwclass*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwclass*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwclass*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwclass*/)( variable[2] /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwclass*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwclass*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwclass*/)( variable[2] /*n_kwclass*/, variable[4]) /*PNode::parent=*/;
   }
   return_label124: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
@@ -3192,10 +3196,10 @@ void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label125: while(false);
   tracehead = trace.prev;
@@ -3210,16 +3214,16 @@ void parser_prod___AInterfaceClasskind___replace_child(val_t  self, val_t  param
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInterfaceClasskind___replace_child, LOCATE_parser_prod, 1222); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[4]) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInterfaceClasskind___replace_child, LOCATE_parser_prod, 1226); nit_exit(1);}
       variable[4] = variable[0];
@@ -3244,11 +3248,11 @@ void parser_prod___AInterfaceClasskind___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label127: while(false);
   tracehead = trace.prev;
@@ -3264,11 +3268,11 @@ void parser_prod___AInterfaceClasskind___visit_all_reverse(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label128: while(false);
   tracehead = trace.prev;
@@ -3297,13 +3301,13 @@ void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t  self, v
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AInterfaceClasskind___empty_init_t)CALL(variable[3],COLOR_parser_prod___AInterfaceClasskind___empty_init))(variable[3], init_table /*YYY*/) /*AInterfaceClasskind::empty_init*/;
+  CALL_parser_prod___AInterfaceClasskind___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AInterfaceClasskind::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[3]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[1] /*n_kwinterface*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwinterface*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwinterface*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwinterface*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwinterface*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwinterface*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwinterface*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwinterface*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwinterface*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwinterface*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwinterface*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwinterface*/)( variable[1] /*n_kwinterface*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwinterface*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwinterface*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwinterface*/)( variable[1] /*n_kwinterface*/, variable[3]) /*PNode::parent=*/;
   }
   return_label130: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
@@ -3320,10 +3324,10 @@ void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label131: while(false);
   tracehead = trace.prev;
@@ -3338,16 +3342,16 @@ void parser_prod___AUniversalClasskind___replace_child(val_t  self, val_t  param
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUniversalClasskind___replace_child, LOCATE_parser_prod, 1273); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[4]) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUniversalClasskind___replace_child, LOCATE_parser_prod, 1277); nit_exit(1);}
       variable[4] = variable[0];
@@ -3372,11 +3376,11 @@ void parser_prod___AUniversalClasskind___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label133: while(false);
   tracehead = trace.prev;
@@ -3392,11 +3396,11 @@ void parser_prod___AUniversalClasskind___visit_all_reverse(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label134: while(false);
   tracehead = trace.prev;
@@ -3425,13 +3429,13 @@ void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t  self, v
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AUniversalClasskind___empty_init_t)CALL(variable[3],COLOR_parser_prod___AUniversalClasskind___empty_init))(variable[3], init_table /*YYY*/) /*AUniversalClasskind::empty_init*/;
+  CALL_parser_prod___AUniversalClasskind___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AUniversalClasskind::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[3]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[1] /*n_kwuniversal*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwuniversal*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwuniversal*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwuniversal*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwuniversal*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwuniversal*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwuniversal*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwuniversal*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwuniversal*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwuniversal*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwuniversal*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwuniversal*/)( variable[1] /*n_kwuniversal*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwuniversal*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwuniversal*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwuniversal*/)( variable[1] /*n_kwuniversal*/, variable[3]) /*PNode::parent=*/;
   }
   return_label136: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
@@ -3448,10 +3452,10 @@ void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFormaldef____n_id(variable[3]) /*AFormaldef::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label137: while(false);
   tracehead = trace.prev;
@@ -3467,10 +3471,10 @@ void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFormaldef____n_type(variable[3]) /*AFormaldef::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label138: while(false);
   tracehead = trace.prev;
@@ -3485,16 +3489,16 @@ void parser_prod___AFormaldef___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1336); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AFormaldef____n_id(variable[4]) /*AFormaldef::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1340); nit_exit(1);}
       variable[4] = variable[0];
@@ -3507,12 +3511,12 @@ void parser_prod___AFormaldef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AFormaldef____n_type(variable[4]) /*AFormaldef::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFormaldef___replace_child, LOCATE_parser_prod, 1350); nit_exit(1);}
       variable[4] = variable[0];
@@ -3537,19 +3541,19 @@ void parser_prod___AFormaldef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[3]) /*AFormaldef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[3]) /*AFormaldef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[3]) /*AFormaldef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[3]) /*AFormaldef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label140: while(false);
   tracehead = trace.prev;
@@ -3565,19 +3569,19 @@ void parser_prod___AFormaldef___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[3]) /*AFormaldef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFormaldef____n_id(variable[3]) /*AFormaldef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[3]) /*AFormaldef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFormaldef____n_type(variable[3]) /*AFormaldef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label141: while(false);
   tracehead = trace.prev;
@@ -3607,20 +3611,20 @@ void parser_prod___AFormaldef___init_aformaldef(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AFormaldef___empty_init_t)CALL(variable[4],COLOR_parser_prod___AFormaldef___empty_init))(variable[4], init_table /*YYY*/) /*AFormaldef::empty_init*/;
+  CALL_parser_prod___AFormaldef___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AFormaldef::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AFormaldef____n_id(variable[4]) /*AFormaldef::_n_id*/ =  variable[1] /*n_id*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AFormaldef____n_type(variable[4]) /*AFormaldef::_n_type*/ =  variable[2] /*n_type*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
   }
   return_label143: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
@@ -3637,10 +3641,10 @@ void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[3]) /*ASuperclass::_n_kwspecial*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label144: while(false);
   tracehead = trace.prev;
@@ -3656,10 +3660,10 @@ void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASuperclass____n_type(variable[3]) /*ASuperclass::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label145: while(false);
   tracehead = trace.prev;
@@ -3674,16 +3678,16 @@ void parser_prod___ASuperclass___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1415); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[4]) /*ASuperclass::_n_kwspecial*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1419); nit_exit(1);}
       variable[4] = variable[0];
@@ -3696,12 +3700,12 @@ void parser_prod___ASuperclass___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperclass____n_type(variable[4]) /*ASuperclass::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperclass___replace_child, LOCATE_parser_prod, 1429); nit_exit(1);}
       variable[4] = variable[0];
@@ -3726,19 +3730,19 @@ void parser_prod___ASuperclass___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[3]) /*ASuperclass::_n_kwspecial*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[3]) /*ASuperclass::_n_kwspecial*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[3]) /*ASuperclass::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[3]) /*ASuperclass::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label147: while(false);
   tracehead = trace.prev;
@@ -3754,19 +3758,19 @@ void parser_prod___ASuperclass___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[3]) /*ASuperclass::_n_kwspecial*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[3]) /*ASuperclass::_n_kwspecial*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[3]) /*ASuperclass::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperclass____n_type(variable[3]) /*ASuperclass::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label148: while(false);
   tracehead = trace.prev;
@@ -3796,20 +3800,20 @@ void parser_prod___ASuperclass___init_asuperclass(val_t  self, val_t  param0, va
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ASuperclass___empty_init_t)CALL(variable[4],COLOR_parser_prod___ASuperclass___empty_init))(variable[4], init_table /*YYY*/) /*ASuperclass::empty_init*/;
+  CALL_parser_prod___ASuperclass___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ASuperclass::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[4]) /*ASuperclass::_n_kwspecial*/ =  variable[1] /*n_kwspecial*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwspecial*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwspecial*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwspecial*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwspecial*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwspecial*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwspecial*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwspecial*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwspecial*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwspecial*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwspecial*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwspecial*/)( variable[1] /*n_kwspecial*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwspecial*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwspecial*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwspecial*/)( variable[1] /*n_kwspecial*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ASuperclass____n_type(variable[4]) /*ASuperclass::_n_type*/ =  variable[2] /*n_type*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
   }
   return_label150: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
@@ -3826,10 +3830,10 @@ void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label151: while(false);
   tracehead = trace.prev;
@@ -3845,10 +3849,10 @@ void parser_prod___AAttrPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[3]) /*AAttrPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label152: while(false);
   tracehead = trace.prev;
@@ -3864,10 +3868,10 @@ void parser_prod___AAttrPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[3]) /*AAttrPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label153: while(false);
   tracehead = trace.prev;
@@ -3883,10 +3887,10 @@ void parser_prod___AAttrPropdef___n_kwattr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[3]) /*AAttrPropdef::_n_kwattr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label154: while(false);
   tracehead = trace.prev;
@@ -3902,10 +3906,10 @@ void parser_prod___AAttrPropdef___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_id(variable[3]) /*AAttrPropdef::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label155: while(false);
   tracehead = trace.prev;
@@ -3921,10 +3925,10 @@ void parser_prod___AAttrPropdef___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_type(variable[3]) /*AAttrPropdef::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label156: while(false);
   tracehead = trace.prev;
@@ -3940,10 +3944,10 @@ void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_readable(variable[3]) /*AAttrPropdef::_n_readable*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label157: while(false);
   tracehead = trace.prev;
@@ -3959,10 +3963,10 @@ void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_writable(variable[3]) /*AAttrPropdef::_n_writable*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label158: while(false);
   tracehead = trace.prev;
@@ -3978,10 +3982,10 @@ void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_expr(variable[3]) /*AAttrPropdef::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label159: while(false);
   tracehead = trace.prev;
@@ -3996,16 +4000,16 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1578); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1582); nit_exit(1);}
       variable[4] = variable[0];
@@ -4018,12 +4022,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[4]) /*AAttrPropdef::_n_readable*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1592); nit_exit(1);}
       variable[4] = variable[0];
@@ -4036,12 +4040,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[4]) /*AAttrPropdef::_n_writable*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1602); nit_exit(1);}
       variable[4] = variable[0];
@@ -4054,12 +4058,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[4]) /*AAttrPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1612); nit_exit(1);}
       variable[4] = variable[0];
@@ -4072,12 +4076,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[4]) /*AAttrPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1622); nit_exit(1);}
       variable[4] = variable[0];
@@ -4090,12 +4094,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[4]) /*AAttrPropdef::_n_kwattr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1632); nit_exit(1);}
       variable[4] = variable[0];
@@ -4108,12 +4112,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[4]) /*AAttrPropdef::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1642); nit_exit(1);}
       variable[4] = variable[0];
@@ -4126,12 +4130,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[4]) /*AAttrPropdef::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1652); nit_exit(1);}
       variable[4] = variable[0];
@@ -4144,12 +4148,12 @@ void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[4]) /*AAttrPropdef::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrPropdef___replace_child, LOCATE_parser_prod, 1662); nit_exit(1);}
       variable[4] = variable[0];
@@ -4174,75 +4178,75 @@ void parser_prod___AAttrPropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[3]) /*AAttrPropdef::_n_readable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[3]) /*AAttrPropdef::_n_readable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[3]) /*AAttrPropdef::_n_writable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[3]) /*AAttrPropdef::_n_writable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[3]) /*AAttrPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[3]) /*AAttrPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[3]) /*AAttrPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[3]) /*AAttrPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[3]) /*AAttrPropdef::_n_kwattr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[3]) /*AAttrPropdef::_n_kwattr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[3]) /*AAttrPropdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[3]) /*AAttrPropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[3]) /*AAttrPropdef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[3]) /*AAttrPropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[3]) /*AAttrPropdef::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[3]) /*AAttrPropdef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label161: while(false);
   tracehead = trace.prev;
@@ -4258,75 +4262,75 @@ void parser_prod___AAttrPropdef___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[3]) /*AAttrPropdef::_n_readable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_readable(variable[3]) /*AAttrPropdef::_n_readable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[3]) /*AAttrPropdef::_n_writable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_writable(variable[3]) /*AAttrPropdef::_n_writable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[3]) /*AAttrPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[3]) /*AAttrPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[3]) /*AAttrPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[3]) /*AAttrPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[3]) /*AAttrPropdef::_n_kwattr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[3]) /*AAttrPropdef::_n_kwattr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[3]) /*AAttrPropdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_id(variable[3]) /*AAttrPropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[3]) /*AAttrPropdef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_type(variable[3]) /*AAttrPropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[3]) /*AAttrPropdef::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrPropdef____n_expr(variable[3]) /*AAttrPropdef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label162: while(false);
   tracehead = trace.prev;
@@ -4363,69 +4367,69 @@ void parser_prod___AAttrPropdef___init_aattrpropdef(val_t  self, val_t  param0,
   variable[9] =  param8;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
   variable[11] = variable[0];
-  ((parser_prod___AAttrPropdef___empty_init_t)CALL(variable[11],COLOR_parser_prod___AAttrPropdef___empty_init))(variable[11], init_table /*YYY*/) /*AAttrPropdef::empty_init*/;
+  CALL_parser_prod___AAttrPropdef___empty_init(variable[11])(variable[11], init_table /*YYY*/) /*AAttrPropdef::empty_init*/;
   variable[11] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[11]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_readable(variable[11]) /*AAttrPropdef::_n_readable*/ =  variable[2] /*n_readable*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_readable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_readable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_readable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_readable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_readable*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_readable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_readable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_readable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_readable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_readable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_readable*/)( variable[2] /*n_readable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_readable*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_readable*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_readable*/)( variable[2] /*n_readable*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_writable(variable[11]) /*AAttrPropdef::_n_writable*/ =  variable[3] /*n_writable*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_writable*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_writable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_writable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_writable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_writable*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_writable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_writable*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_writable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_writable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_writable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_writable*/)( variable[3] /*n_writable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_writable*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_writable*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_writable*/)( variable[3] /*n_writable*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[11]) /*AAttrPropdef::_n_kwredef*/ =  variable[4] /*n_kwredef*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwredef*/)( variable[4] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwredef*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwredef*/)( variable[4] /*n_kwredef*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[11]) /*AAttrPropdef::_n_visibility*/ =  variable[5] /*n_visibility*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_visibility*/)( variable[5] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_visibility*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_visibility*/)( variable[5] /*n_visibility*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[11]) /*AAttrPropdef::_n_kwattr*/ =  variable[6] /*n_kwattr*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_kwattr*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_kwattr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_kwattr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_kwattr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_kwattr*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_kwattr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_kwattr*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_kwattr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_kwattr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_kwattr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_kwattr*/)( variable[6] /*n_kwattr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_kwattr*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_kwattr*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_kwattr*/)( variable[6] /*n_kwattr*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_id(variable[11]) /*AAttrPropdef::_n_id*/ =  variable[7] /*n_id*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[7] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_id*/)( variable[7] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n_id*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_id*/)( variable[7] /*n_id*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_type(variable[11]) /*AAttrPropdef::_n_type*/ =  variable[8] /*n_type*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[8] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[8] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[8] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[8] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[8] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*n_type*/)( variable[8] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n_type*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n_type*/)( variable[8] /*n_type*/, variable[11]) /*PNode::parent=*/;
   }
   variable[11] = variable[0];
   ATTR_parser_nodes___AAttrPropdef____n_expr(variable[11]) /*AAttrPropdef::_n_expr*/ =  variable[9] /*n_expr*/;
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[9] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[9] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[9] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[9] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[9] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*n_expr*/)( variable[9] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[11])) { /*if*/
     variable[11] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[9] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[9] /*n_expr*/, variable[11]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n_expr*/)( variable[9] /*n_expr*/, variable[11]) /*PNode::parent=*/;
   }
   return_label164: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
@@ -4442,10 +4446,10 @@ void parser_prod___AMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label165: while(false);
   tracehead = trace.prev;
@@ -4461,10 +4465,10 @@ void parser_prod___AMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label166: while(false);
   tracehead = trace.prev;
@@ -4480,10 +4484,10 @@ void parser_prod___AMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label167: while(false);
   tracehead = trace.prev;
@@ -4499,10 +4503,10 @@ void parser_prod___AMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label168: while(false);
   tracehead = trace.prev;
@@ -4518,10 +4522,10 @@ void parser_prod___AMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label169: while(false);
   tracehead = trace.prev;
@@ -4536,16 +4540,16 @@ void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1805); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1809); nit_exit(1);}
       variable[4] = variable[0];
@@ -4558,12 +4562,12 @@ void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1819); nit_exit(1);}
       variable[4] = variable[0];
@@ -4576,12 +4580,12 @@ void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1829); nit_exit(1);}
       variable[4] = variable[0];
@@ -4594,12 +4598,12 @@ void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1839); nit_exit(1);}
       variable[4] = variable[0];
@@ -4612,12 +4616,12 @@ void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMethPropdef___replace_child, LOCATE_parser_prod, 1849); nit_exit(1);}
       variable[4] = variable[0];
@@ -4642,43 +4646,43 @@ void parser_prod___AMethPropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label171: while(false);
   tracehead = trace.prev;
@@ -4694,43 +4698,43 @@ void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label172: while(false);
   tracehead = trace.prev;
@@ -4763,41 +4767,41 @@ void parser_prod___AMethPropdef___init_amethpropdef(val_t  self, val_t  param0,
   variable[5] =  param4;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
   variable[7] = variable[0];
-  ((parser_prod___AMethPropdef___empty_init_t)CALL(variable[7],COLOR_parser_prod___AMethPropdef___empty_init))(variable[7], init_table /*YYY*/) /*AMethPropdef::empty_init*/;
+  CALL_parser_prod___AMethPropdef___empty_init(variable[7])(variable[7], init_table /*YYY*/) /*AMethPropdef::empty_init*/;
   variable[7] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[7]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[7]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[7]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[7]) /*AMethPropdef::_n_methid*/ =  variable[4] /*n_methid*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_methid*/)( variable[4] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_methid*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_methid*/)( variable[4] /*n_methid*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[7]) /*AMethPropdef::_n_signature*/ =  variable[5] /*n_signature*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_signature*/)( variable[5] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_signature*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_signature*/)( variable[5] /*n_signature*/, variable[7]) /*PNode::parent=*/;
   }
   return_label174: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
@@ -4814,10 +4818,10 @@ void parser_prod___ADeferredMethPropdef___n_doc__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label175: while(false);
   tracehead = trace.prev;
@@ -4833,10 +4837,10 @@ void parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label176: while(false);
   tracehead = trace.prev;
@@ -4852,10 +4856,10 @@ void parser_prod___ADeferredMethPropdef___n_visibility__eq(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label177: while(false);
   tracehead = trace.prev;
@@ -4871,10 +4875,10 @@ void parser_prod___ADeferredMethPropdef___n_methid__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label178: while(false);
   tracehead = trace.prev;
@@ -4890,10 +4894,10 @@ void parser_prod___ADeferredMethPropdef___n_signature__eq(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label179: while(false);
   tracehead = trace.prev;
@@ -4909,10 +4913,10 @@ void parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[3]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label180: while(false);
   tracehead = trace.prev;
@@ -4927,16 +4931,16 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 1980); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 1984); nit_exit(1);}
       variable[4] = variable[0];
@@ -4949,12 +4953,12 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 1994); nit_exit(1);}
       variable[4] = variable[0];
@@ -4967,12 +4971,12 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2004); nit_exit(1);}
       variable[4] = variable[0];
@@ -4985,12 +4989,12 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[4]) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2014); nit_exit(1);}
       variable[4] = variable[0];
@@ -5003,12 +5007,12 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2024); nit_exit(1);}
       variable[4] = variable[0];
@@ -5021,12 +5025,12 @@ void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADeferredMethPropdef___replace_child, LOCATE_parser_prod, 2034); nit_exit(1);}
       variable[4] = variable[0];
@@ -5051,51 +5055,51 @@ void parser_prod___ADeferredMethPropdef___visit_all(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[3]) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[3]) /*ADeferredMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label182: while(false);
   tracehead = trace.prev;
@@ -5111,51 +5115,51 @@ void parser_prod___ADeferredMethPropdef___visit_all_reverse(val_t  self, val_t
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[3]) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[3]) /*ADeferredMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label183: while(false);
   tracehead = trace.prev;
@@ -5189,48 +5193,48 @@ void parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t  self,
   variable[6] =  param5;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
   variable[8] = variable[0];
-  ((parser_prod___ADeferredMethPropdef___empty_init_t)CALL(variable[8],COLOR_parser_prod___ADeferredMethPropdef___empty_init))(variable[8], init_table /*YYY*/) /*ADeferredMethPropdef::empty_init*/;
+  CALL_parser_prod___ADeferredMethPropdef___empty_init(variable[8])(variable[8], init_table /*YYY*/) /*ADeferredMethPropdef::empty_init*/;
   variable[8] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[8]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[8]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[8]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[8]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwmeth*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[8]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_methid*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[8]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_signature*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[8]) /*PNode::parent=*/;
   }
   return_label185: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
@@ -5247,10 +5251,10 @@ void parser_prod___AInternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label186: while(false);
   tracehead = trace.prev;
@@ -5266,10 +5270,10 @@ void parser_prod___AInternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label187: while(false);
   tracehead = trace.prev;
@@ -5285,10 +5289,10 @@ void parser_prod___AInternMethPropdef___n_visibility__eq(val_t  self, val_t  par
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label188: while(false);
   tracehead = trace.prev;
@@ -5304,10 +5308,10 @@ void parser_prod___AInternMethPropdef___n_methid__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label189: while(false);
   tracehead = trace.prev;
@@ -5323,10 +5327,10 @@ void parser_prod___AInternMethPropdef___n_signature__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label190: while(false);
   tracehead = trace.prev;
@@ -5342,10 +5346,10 @@ void parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[3]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label191: while(false);
   tracehead = trace.prev;
@@ -5360,16 +5364,16 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2171); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2175); nit_exit(1);}
       variable[4] = variable[0];
@@ -5382,12 +5386,12 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2185); nit_exit(1);}
       variable[4] = variable[0];
@@ -5400,12 +5404,12 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2195); nit_exit(1);}
       variable[4] = variable[0];
@@ -5418,12 +5422,12 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[4]) /*AInternMethPropdef::_n_kwmeth*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2205); nit_exit(1);}
       variable[4] = variable[0];
@@ -5436,12 +5440,12 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2215); nit_exit(1);}
       variable[4] = variable[0];
@@ -5454,12 +5458,12 @@ void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInternMethPropdef___replace_child, LOCATE_parser_prod, 2225); nit_exit(1);}
       variable[4] = variable[0];
@@ -5484,51 +5488,51 @@ void parser_prod___AInternMethPropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[3]) /*AInternMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[3]) /*AInternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label193: while(false);
   tracehead = trace.prev;
@@ -5544,51 +5548,51 @@ void parser_prod___AInternMethPropdef___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[3]) /*AInternMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[3]) /*AInternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label194: while(false);
   tracehead = trace.prev;
@@ -5622,48 +5626,48 @@ void parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t  self, val
   variable[6] =  param5;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
   variable[8] = variable[0];
-  ((parser_prod___AInternMethPropdef___empty_init_t)CALL(variable[8],COLOR_parser_prod___AInternMethPropdef___empty_init))(variable[8], init_table /*YYY*/) /*AInternMethPropdef::empty_init*/;
+  CALL_parser_prod___AInternMethPropdef___empty_init(variable[8])(variable[8], init_table /*YYY*/) /*AInternMethPropdef::empty_init*/;
   variable[8] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[8]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[8]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[8]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[8]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwmeth*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[8]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_methid*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[8]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_signature*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[8]) /*PNode::parent=*/;
   }
   return_label196: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
@@ -5680,10 +5684,10 @@ void parser_prod___AExternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label197: while(false);
   tracehead = trace.prev;
@@ -5699,10 +5703,10 @@ void parser_prod___AExternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label198: while(false);
   tracehead = trace.prev;
@@ -5718,10 +5722,10 @@ void parser_prod___AExternMethPropdef___n_visibility__eq(val_t  self, val_t  par
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label199: while(false);
   tracehead = trace.prev;
@@ -5737,10 +5741,10 @@ void parser_prod___AExternMethPropdef___n_methid__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label200: while(false);
   tracehead = trace.prev;
@@ -5756,10 +5760,10 @@ void parser_prod___AExternMethPropdef___n_signature__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label201: while(false);
   tracehead = trace.prev;
@@ -5775,10 +5779,10 @@ void parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[3]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label202: while(false);
   tracehead = trace.prev;
@@ -5794,10 +5798,10 @@ void parser_prod___AExternMethPropdef___n_extern__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[3]) /*AExternMethPropdef::_n_extern*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label203: while(false);
   tracehead = trace.prev;
@@ -5812,16 +5816,16 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2374); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2378); nit_exit(1);}
       variable[4] = variable[0];
@@ -5834,12 +5838,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2388); nit_exit(1);}
       variable[4] = variable[0];
@@ -5852,12 +5856,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2398); nit_exit(1);}
       variable[4] = variable[0];
@@ -5870,12 +5874,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[4]) /*AExternMethPropdef::_n_kwmeth*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2408); nit_exit(1);}
       variable[4] = variable[0];
@@ -5888,12 +5892,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2418); nit_exit(1);}
       variable[4] = variable[0];
@@ -5906,12 +5910,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2428); nit_exit(1);}
       variable[4] = variable[0];
@@ -5924,12 +5928,12 @@ void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[4]) /*AExternMethPropdef::_n_extern*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AExternMethPropdef___replace_child, LOCATE_parser_prod, 2438); nit_exit(1);}
       variable[4] = variable[0];
@@ -5954,59 +5958,59 @@ void parser_prod___AExternMethPropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[3]) /*AExternMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[3]) /*AExternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[3]) /*AExternMethPropdef::_n_extern*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[3]) /*AExternMethPropdef::_n_extern*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label205: while(false);
   tracehead = trace.prev;
@@ -6022,59 +6026,59 @@ void parser_prod___AExternMethPropdef___visit_all_reverse(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[3]) /*AExternMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[3]) /*AExternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[3]) /*AExternMethPropdef::_n_extern*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[3]) /*AExternMethPropdef::_n_extern*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label206: while(false);
   tracehead = trace.prev;
@@ -6109,55 +6113,55 @@ void parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t  self, val
   variable[7] =  param6;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
   variable[9] = variable[0];
-  ((parser_prod___AExternMethPropdef___empty_init_t)CALL(variable[9],COLOR_parser_prod___AExternMethPropdef___empty_init))(variable[9], init_table /*YYY*/) /*AExternMethPropdef::empty_init*/;
+  CALL_parser_prod___AExternMethPropdef___empty_init(variable[9])(variable[9], init_table /*YYY*/) /*AExternMethPropdef::empty_init*/;
   variable[9] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[9]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[9]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[9]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[9]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwmeth*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[9]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[9]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[9]) /*AExternMethPropdef::_n_extern*/ =  variable[7] /*n_extern*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_extern*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_extern*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*n_extern*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_extern*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*n_extern*/,COLOR_kernel___Object_____eqeq))( variable[7] /*n_extern*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_extern*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_extern*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_extern*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_extern*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_extern*/)( variable[7] /*n_extern*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n_extern*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n_extern*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_extern*/)( variable[7] /*n_extern*/, variable[9]) /*PNode::parent=*/;
   }
   return_label208: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
@@ -6174,10 +6178,10 @@ void parser_prod___AConcreteMethPropdef___n_doc__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label209: while(false);
   tracehead = trace.prev;
@@ -6193,10 +6197,10 @@ void parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label210: while(false);
   tracehead = trace.prev;
@@ -6212,10 +6216,10 @@ void parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label211: while(false);
   tracehead = trace.prev;
@@ -6231,10 +6235,10 @@ void parser_prod___AConcreteMethPropdef___n_methid__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label212: while(false);
   tracehead = trace.prev;
@@ -6250,10 +6254,10 @@ void parser_prod___AConcreteMethPropdef___n_signature__eq(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label213: while(false);
   tracehead = trace.prev;
@@ -6269,10 +6273,10 @@ void parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[3]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label214: while(false);
   tracehead = trace.prev;
@@ -6288,10 +6292,10 @@ void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label215: while(false);
   tracehead = trace.prev;
@@ -6306,16 +6310,16 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2593); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2597); nit_exit(1);}
       variable[4] = variable[0];
@@ -6328,12 +6332,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2607); nit_exit(1);}
       variable[4] = variable[0];
@@ -6346,12 +6350,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2617); nit_exit(1);}
       variable[4] = variable[0];
@@ -6364,12 +6368,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[4]) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2627); nit_exit(1);}
       variable[4] = variable[0];
@@ -6382,12 +6386,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2637); nit_exit(1);}
       variable[4] = variable[0];
@@ -6400,12 +6404,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2647); nit_exit(1);}
       variable[4] = variable[0];
@@ -6418,12 +6422,12 @@ void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteMethPropdef___replace_child, LOCATE_parser_prod, 2657); nit_exit(1);}
       variable[4] = variable[0];
@@ -6448,59 +6452,59 @@ void parser_prod___AConcreteMethPropdef___visit_all(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[3]) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[3]) /*AConcreteMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label217: while(false);
   tracehead = trace.prev;
@@ -6516,59 +6520,59 @@ void parser_prod___AConcreteMethPropdef___visit_all_reverse(val_t  self, val_t
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[3]) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[3]) /*AConcreteMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label218: while(false);
   tracehead = trace.prev;
@@ -6603,55 +6607,55 @@ void parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t  self,
   variable[7] =  param6;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
   variable[9] = variable[0];
-  ((parser_prod___AConcreteMethPropdef___empty_init_t)CALL(variable[9],COLOR_parser_prod___AConcreteMethPropdef___empty_init))(variable[9], init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
+  CALL_parser_prod___AConcreteMethPropdef___empty_init(variable[9])(variable[9], init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
   variable[9] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[9]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[9]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[9]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[9]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[4] /*n_kwmeth*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwmeth*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwmeth*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwmeth*/)( variable[4] /*n_kwmeth*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[9]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[9]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[9]) /*AConcreteMethPropdef::_n_block*/ =  variable[7] /*n_block*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n_block*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_block*/)( variable[7] /*n_block*/, variable[9]) /*PNode::parent=*/;
   }
   return_label220: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
@@ -6668,10 +6672,10 @@ void parser_prod___AConcreteInitPropdef___n_doc__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label221: while(false);
   tracehead = trace.prev;
@@ -6687,10 +6691,10 @@ void parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label222: while(false);
   tracehead = trace.prev;
@@ -6706,10 +6710,10 @@ void parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t  self, val_t  p
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label223: while(false);
   tracehead = trace.prev;
@@ -6725,10 +6729,10 @@ void parser_prod___AConcreteInitPropdef___n_methid__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label224: while(false);
   tracehead = trace.prev;
@@ -6744,10 +6748,10 @@ void parser_prod___AConcreteInitPropdef___n_signature__eq(val_t  self, val_t  pa
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label225: while(false);
   tracehead = trace.prev;
@@ -6763,10 +6767,10 @@ void parser_prod___AConcreteInitPropdef___n_block__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label226: while(false);
   tracehead = trace.prev;
@@ -6782,10 +6786,10 @@ void parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[3]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label227: while(false);
   tracehead = trace.prev;
@@ -6800,16 +6804,16 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2812); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2816); nit_exit(1);}
       variable[4] = variable[0];
@@ -6822,12 +6826,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2826); nit_exit(1);}
       variable[4] = variable[0];
@@ -6840,12 +6844,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2836); nit_exit(1);}
       variable[4] = variable[0];
@@ -6858,12 +6862,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[4]) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2846); nit_exit(1);}
       variable[4] = variable[0];
@@ -6876,12 +6880,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2856); nit_exit(1);}
       variable[4] = variable[0];
@@ -6894,12 +6898,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2866); nit_exit(1);}
       variable[4] = variable[0];
@@ -6912,12 +6916,12 @@ void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AConcreteInitPropdef___replace_child, LOCATE_parser_prod, 2876); nit_exit(1);}
       variable[4] = variable[0];
@@ -6942,59 +6946,59 @@ void parser_prod___AConcreteInitPropdef___visit_all(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[3]) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[3]) /*AConcreteInitPropdef::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label229: while(false);
   tracehead = trace.prev;
@@ -7010,59 +7014,59 @@ void parser_prod___AConcreteInitPropdef___visit_all_reverse(val_t  self, val_t
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_visibility(variable[3]) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[3]) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[3]) /*AConcreteInitPropdef::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_methid(variable[3]) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_signature(variable[3]) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label230: while(false);
   tracehead = trace.prev;
@@ -7097,55 +7101,55 @@ void parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t  self,
   variable[7] =  param6;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
   variable[9] = variable[0];
-  ((parser_prod___AConcreteInitPropdef___empty_init_t)CALL(variable[9],COLOR_parser_prod___AConcreteInitPropdef___empty_init))(variable[9], init_table /*YYY*/) /*AConcreteInitPropdef::empty_init*/;
+  CALL_parser_prod___AConcreteInitPropdef___empty_init(variable[9])(variable[9], init_table /*YYY*/) /*AConcreteInitPropdef::empty_init*/;
   variable[9] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[9]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[9]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_visibility(variable[9]) /*AMethPropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[9]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[4] /*n_kwinit*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwinit*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwinit*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwinit*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwinit*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwinit*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwinit*/)( variable[4] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwinit*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwinit*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwinit*/)( variable[4] /*n_kwinit*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_methid(variable[9]) /*AMethPropdef::_n_methid*/ =  variable[5] /*n_methid*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_methid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_methid*/)( variable[5] /*n_methid*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_signature(variable[9]) /*AMethPropdef::_n_signature*/ =  variable[6] /*n_signature*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_signature*/)( variable[6] /*n_signature*/, variable[9]) /*PNode::parent=*/;
   }
   variable[9] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[9]) /*AConcreteMethPropdef::_n_block*/ =  variable[7] /*n_block*/;
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[7] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[7] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[7] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*n_block*/)( variable[7] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[9])) { /*if*/
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n_block*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n_block*/)( variable[7] /*n_block*/, variable[9]) /*PNode::parent=*/;
   }
   return_label232: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
@@ -7162,10 +7166,10 @@ void parser_prod___AMainMethPropdef___n_kwredef__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label233: while(false);
   tracehead = trace.prev;
@@ -7181,10 +7185,10 @@ void parser_prod___AMainMethPropdef___n_block__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label234: while(false);
   tracehead = trace.prev;
@@ -7199,16 +7203,16 @@ void parser_prod___AMainMethPropdef___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 2971); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 2975); nit_exit(1);}
       variable[4] = variable[0];
@@ -7221,12 +7225,12 @@ void parser_prod___AMainMethPropdef___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMainMethPropdef___replace_child, LOCATE_parser_prod, 2985); nit_exit(1);}
       variable[4] = variable[0];
@@ -7251,19 +7255,19 @@ void parser_prod___AMainMethPropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label236: while(false);
   tracehead = trace.prev;
@@ -7279,19 +7283,19 @@ void parser_prod___AMainMethPropdef___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[3]) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[3]) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label237: while(false);
   tracehead = trace.prev;
@@ -7321,20 +7325,20 @@ void parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t  self, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AMainMethPropdef___empty_init_t)CALL(variable[4],COLOR_parser_prod___AMainMethPropdef___empty_init))(variable[4], init_table /*YYY*/) /*AMainMethPropdef::empty_init*/;
+  CALL_parser_prod___AMainMethPropdef___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AMainMethPropdef::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*n_block*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_block*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_block*/)( variable[2] /*n_block*/, variable[4]) /*PNode::parent=*/;
   }
   return_label239: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
@@ -7351,10 +7355,10 @@ void parser_prod___ATypePropdef___n_doc__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label240: while(false);
   tracehead = trace.prev;
@@ -7370,10 +7374,10 @@ void parser_prod___ATypePropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[3]) /*ATypePropdef::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label241: while(false);
   tracehead = trace.prev;
@@ -7389,10 +7393,10 @@ void parser_prod___ATypePropdef___n_visibility__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_visibility(variable[3]) /*ATypePropdef::_n_visibility*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label242: while(false);
   tracehead = trace.prev;
@@ -7408,10 +7412,10 @@ void parser_prod___ATypePropdef___n_kwtype__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[3]) /*ATypePropdef::_n_kwtype*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label243: while(false);
   tracehead = trace.prev;
@@ -7427,10 +7431,10 @@ void parser_prod___ATypePropdef___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_id(variable[3]) /*ATypePropdef::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label244: while(false);
   tracehead = trace.prev;
@@ -7446,10 +7450,10 @@ void parser_prod___ATypePropdef___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_type(variable[3]) /*ATypePropdef::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label245: while(false);
   tracehead = trace.prev;
@@ -7464,16 +7468,16 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3098); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3102); nit_exit(1);}
       variable[4] = variable[0];
@@ -7486,12 +7490,12 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[4]) /*ATypePropdef::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3112); nit_exit(1);}
       variable[4] = variable[0];
@@ -7504,12 +7508,12 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[4]) /*ATypePropdef::_n_visibility*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3122); nit_exit(1);}
       variable[4] = variable[0];
@@ -7522,12 +7526,12 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[4]) /*ATypePropdef::_n_kwtype*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3132); nit_exit(1);}
       variable[4] = variable[0];
@@ -7540,12 +7544,12 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATypePropdef____n_id(variable[4]) /*ATypePropdef::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3142); nit_exit(1);}
       variable[4] = variable[0];
@@ -7558,12 +7562,12 @@ void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATypePropdef____n_type(variable[4]) /*ATypePropdef::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATypePropdef___replace_child, LOCATE_parser_prod, 3152); nit_exit(1);}
       variable[4] = variable[0];
@@ -7588,51 +7592,51 @@ void parser_prod___ATypePropdef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[3]) /*ATypePropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[3]) /*ATypePropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[3]) /*ATypePropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[3]) /*ATypePropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[3]) /*ATypePropdef::_n_kwtype*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[3]) /*ATypePropdef::_n_kwtype*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[3]) /*ATypePropdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[3]) /*ATypePropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[3]) /*ATypePropdef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[3]) /*ATypePropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label247: while(false);
   tracehead = trace.prev;
@@ -7648,51 +7652,51 @@ void parser_prod___ATypePropdef___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PPropdef____n_doc(variable[3]) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[3]) /*ATypePropdef::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[3]) /*ATypePropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[3]) /*ATypePropdef::_n_visibility*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_visibility(variable[3]) /*ATypePropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[3]) /*ATypePropdef::_n_kwtype*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[3]) /*ATypePropdef::_n_kwtype*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[3]) /*ATypePropdef::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_id(variable[3]) /*ATypePropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[3]) /*ATypePropdef::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATypePropdef____n_type(variable[3]) /*ATypePropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label248: while(false);
   tracehead = trace.prev;
@@ -7726,48 +7730,48 @@ void parser_prod___ATypePropdef___init_atypepropdef(val_t  self, val_t  param0,
   variable[6] =  param5;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
   variable[8] = variable[0];
-  ((parser_prod___ATypePropdef___empty_init_t)CALL(variable[8],COLOR_parser_prod___ATypePropdef___empty_init))(variable[8], init_table /*YYY*/) /*ATypePropdef::empty_init*/;
+  CALL_parser_prod___ATypePropdef___empty_init(variable[8])(variable[8], init_table /*YYY*/) /*ATypePropdef::empty_init*/;
   variable[8] = variable[0];
   ATTR_parser_nodes___PPropdef____n_doc(variable[8]) /*PPropdef::_n_doc*/ =  variable[1] /*n_doc*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_doc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_doc*/)( variable[1] /*n_doc*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[8]) /*ATypePropdef::_n_kwredef*/ =  variable[2] /*n_kwredef*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwredef*/)( variable[2] /*n_kwredef*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_visibility(variable[8]) /*ATypePropdef::_n_visibility*/ =  variable[3] /*n_visibility*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_visibility*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_visibility*/)( variable[3] /*n_visibility*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[8]) /*ATypePropdef::_n_kwtype*/ =  variable[4] /*n_kwtype*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwtype*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwtype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwtype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_kwtype*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_kwtype*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_kwtype*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_kwtype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_kwtype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_kwtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_kwtype*/)( variable[4] /*n_kwtype*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_kwtype*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_kwtype*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_kwtype*/)( variable[4] /*n_kwtype*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_id(variable[8]) /*ATypePropdef::_n_id*/ =  variable[5] /*n_id*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_id*/)( variable[5] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_id*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_id*/)( variable[5] /*n_id*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___ATypePropdef____n_type(variable[8]) /*ATypePropdef::_n_type*/ =  variable[6] /*n_type*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_type*/)( variable[6] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_type*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_type*/)( variable[6] /*n_type*/, variable[8]) /*PNode::parent=*/;
   }
   return_label250: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
@@ -7784,10 +7788,10 @@ void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label251: while(false);
   tracehead = trace.prev;
@@ -7803,10 +7807,10 @@ void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReadAble____n_kwreadable(variable[3]) /*AReadAble::_n_kwreadable*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label252: while(false);
   tracehead = trace.prev;
@@ -7821,16 +7825,16 @@ void parser_prod___AReadAble___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3241); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3245); nit_exit(1);}
       variable[4] = variable[0];
@@ -7843,12 +7847,12 @@ void parser_prod___AReadAble___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[4]) /*AReadAble::_n_kwreadable*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReadAble___replace_child, LOCATE_parser_prod, 3255); nit_exit(1);}
       variable[4] = variable[0];
@@ -7873,19 +7877,19 @@ void parser_prod___AReadAble___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[3]) /*AReadAble::_n_kwreadable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[3]) /*AReadAble::_n_kwreadable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label254: while(false);
   tracehead = trace.prev;
@@ -7901,19 +7905,19 @@ void parser_prod___AReadAble___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[3]) /*AReadAble::_n_kwreadable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReadAble____n_kwreadable(variable[3]) /*AReadAble::_n_kwreadable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label255: while(false);
   tracehead = trace.prev;
@@ -7943,20 +7947,20 @@ void parser_prod___AReadAble___init_areadable(val_t  self, val_t  param0, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AReadAble___empty_init_t)CALL(variable[4],COLOR_parser_prod___AReadAble___empty_init))(variable[4], init_table /*YYY*/) /*AReadAble::empty_init*/;
+  CALL_parser_prod___AReadAble___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AReadAble::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AReadAble____n_kwreadable(variable[4]) /*AReadAble::_n_kwreadable*/ =  variable[2] /*n_kwreadable*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwreadable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwreadable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwreadable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwreadable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwreadable*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwreadable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwreadable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwreadable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwreadable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwreadable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwreadable*/)( variable[2] /*n_kwreadable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwreadable*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwreadable*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwreadable*/)( variable[2] /*n_kwreadable*/, variable[4]) /*PNode::parent=*/;
   }
   return_label257: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReadAble].i] = 1;
@@ -7973,10 +7977,10 @@ void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label258: while(false);
   tracehead = trace.prev;
@@ -7992,10 +7996,10 @@ void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[3]) /*AWriteAble::_n_kwwritable*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label259: while(false);
   tracehead = trace.prev;
@@ -8010,16 +8014,16 @@ void parser_prod___AWriteAble___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3320); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3324); nit_exit(1);}
       variable[4] = variable[0];
@@ -8032,12 +8036,12 @@ void parser_prod___AWriteAble___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[4]) /*AWriteAble::_n_kwwritable*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWriteAble___replace_child, LOCATE_parser_prod, 3334); nit_exit(1);}
       variable[4] = variable[0];
@@ -8062,19 +8066,19 @@ void parser_prod___AWriteAble___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[3]) /*AWriteAble::_n_kwwritable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[3]) /*AWriteAble::_n_kwwritable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label261: while(false);
   tracehead = trace.prev;
@@ -8090,19 +8094,19 @@ void parser_prod___AWriteAble___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PAble____n_kwredef(variable[3]) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[3]) /*AWriteAble::_n_kwwritable*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[3]) /*AWriteAble::_n_kwwritable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label262: while(false);
   tracehead = trace.prev;
@@ -8132,20 +8136,20 @@ void parser_prod___AWriteAble___init_awriteable(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AWriteAble___empty_init_t)CALL(variable[4],COLOR_parser_prod___AWriteAble___empty_init))(variable[4], init_table /*YYY*/) /*AWriteAble::empty_init*/;
+  CALL_parser_prod___AWriteAble___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AWriteAble::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  variable[1] /*n_kwredef*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwredef*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwredef*/)( variable[1] /*n_kwredef*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[4]) /*AWriteAble::_n_kwwritable*/ =  variable[2] /*n_kwwritable*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwwritable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwwritable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwwritable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwwritable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwwritable*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwwritable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwwritable*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwwritable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwwritable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwwritable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwwritable*/)( variable[2] /*n_kwwritable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwwritable*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwwritable*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwwritable*/)( variable[2] /*n_kwwritable*/, variable[4]) /*PNode::parent=*/;
   }
   return_label264: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
@@ -8162,10 +8166,10 @@ void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label265: while(false);
   tracehead = trace.prev;
@@ -8180,16 +8184,16 @@ void parser_prod___AIdMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIdMethid___replace_child, LOCATE_parser_prod, 3387); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIdMethid____n_id(variable[4]) /*AIdMethid::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIdMethid___replace_child, LOCATE_parser_prod, 3391); nit_exit(1);}
       variable[4] = variable[0];
@@ -8214,11 +8218,11 @@ void parser_prod___AIdMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label267: while(false);
   tracehead = trace.prev;
@@ -8234,11 +8238,11 @@ void parser_prod___AIdMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label268: while(false);
   tracehead = trace.prev;
@@ -8267,13 +8271,13 @@ void parser_prod___AIdMethid___init_aidmethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AIdMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AIdMethid___empty_init))(variable[3], init_table /*YYY*/) /*AIdMethid::empty_init*/;
+  CALL_parser_prod___AIdMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AIdMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIdMethid____n_id(variable[3]) /*AIdMethid::_n_id*/ =  variable[1] /*n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[3]) /*PNode::parent=*/;
   }
   return_label270: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
@@ -8290,10 +8294,10 @@ void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label271: while(false);
   tracehead = trace.prev;
@@ -8308,16 +8312,16 @@ void parser_prod___APlusMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusMethid___replace_child, LOCATE_parser_prod, 3438); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APlusMethid____n_plus(variable[4]) /*APlusMethid::_n_plus*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusMethid___replace_child, LOCATE_parser_prod, 3442); nit_exit(1);}
       variable[4] = variable[0];
@@ -8342,11 +8346,11 @@ void parser_prod___APlusMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label273: while(false);
   tracehead = trace.prev;
@@ -8362,11 +8366,11 @@ void parser_prod___APlusMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label274: while(false);
   tracehead = trace.prev;
@@ -8395,13 +8399,13 @@ void parser_prod___APlusMethid___init_aplusmethid(val_t  self, val_t  param0, in
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___APlusMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___APlusMethid___empty_init))(variable[3], init_table /*YYY*/) /*APlusMethid::empty_init*/;
+  CALL_parser_prod___APlusMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*APlusMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___APlusMethid____n_plus(variable[3]) /*APlusMethid::_n_plus*/ =  variable[1] /*n_plus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_plus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_plus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_plus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_plus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_plus*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_plus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_plus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_plus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_plus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_plus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_plus*/)( variable[1] /*n_plus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_plus*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_plus*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_plus*/)( variable[1] /*n_plus*/, variable[3]) /*PNode::parent=*/;
   }
   return_label276: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
@@ -8418,10 +8422,10 @@ void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label277: while(false);
   tracehead = trace.prev;
@@ -8436,16 +8440,16 @@ void parser_prod___AMinusMethid___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusMethid___replace_child, LOCATE_parser_prod, 3489); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[4]) /*AMinusMethid::_n_minus*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusMethid___replace_child, LOCATE_parser_prod, 3493); nit_exit(1);}
       variable[4] = variable[0];
@@ -8470,11 +8474,11 @@ void parser_prod___AMinusMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label279: while(false);
   tracehead = trace.prev;
@@ -8490,11 +8494,11 @@ void parser_prod___AMinusMethid___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label280: while(false);
   tracehead = trace.prev;
@@ -8523,13 +8527,13 @@ void parser_prod___AMinusMethid___init_aminusmethid(val_t  self, val_t  param0,
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AMinusMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AMinusMethid___empty_init))(variable[3], init_table /*YYY*/) /*AMinusMethid::empty_init*/;
+  CALL_parser_prod___AMinusMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AMinusMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMinusMethid____n_minus(variable[3]) /*AMinusMethid::_n_minus*/ =  variable[1] /*n_minus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minus*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_minus*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_minus*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/, variable[3]) /*PNode::parent=*/;
   }
   return_label282: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
@@ -8546,10 +8550,10 @@ void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label283: while(false);
   tracehead = trace.prev;
@@ -8564,16 +8568,16 @@ void parser_prod___AStarMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarMethid___replace_child, LOCATE_parser_prod, 3540); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AStarMethid____n_star(variable[4]) /*AStarMethid::_n_star*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarMethid___replace_child, LOCATE_parser_prod, 3544); nit_exit(1);}
       variable[4] = variable[0];
@@ -8598,11 +8602,11 @@ void parser_prod___AStarMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label285: while(false);
   tracehead = trace.prev;
@@ -8618,11 +8622,11 @@ void parser_prod___AStarMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label286: while(false);
   tracehead = trace.prev;
@@ -8651,13 +8655,13 @@ void parser_prod___AStarMethid___init_astarmethid(val_t  self, val_t  param0, in
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AStarMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AStarMethid___empty_init))(variable[3], init_table /*YYY*/) /*AStarMethid::empty_init*/;
+  CALL_parser_prod___AStarMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AStarMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStarMethid____n_star(variable[3]) /*AStarMethid::_n_star*/ =  variable[1] /*n_star*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_star*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_star*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_star*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_star*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_star*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_star*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_star*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_star*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_star*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_star*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_star*/)( variable[1] /*n_star*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_star*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_star*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_star*/)( variable[1] /*n_star*/, variable[3]) /*PNode::parent=*/;
   }
   return_label288: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
@@ -8674,10 +8678,10 @@ void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label289: while(false);
   tracehead = trace.prev;
@@ -8692,16 +8696,16 @@ void parser_prod___ASlashMethid___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashMethid___replace_child, LOCATE_parser_prod, 3591); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[4]) /*ASlashMethid::_n_slash*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashMethid___replace_child, LOCATE_parser_prod, 3595); nit_exit(1);}
       variable[4] = variable[0];
@@ -8726,11 +8730,11 @@ void parser_prod___ASlashMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label291: while(false);
   tracehead = trace.prev;
@@ -8746,11 +8750,11 @@ void parser_prod___ASlashMethid___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label292: while(false);
   tracehead = trace.prev;
@@ -8779,13 +8783,13 @@ void parser_prod___ASlashMethid___init_aslashmethid(val_t  self, val_t  param0,
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ASlashMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___ASlashMethid___empty_init))(variable[3], init_table /*YYY*/) /*ASlashMethid::empty_init*/;
+  CALL_parser_prod___ASlashMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ASlashMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASlashMethid____n_slash(variable[3]) /*ASlashMethid::_n_slash*/ =  variable[1] /*n_slash*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_slash*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_slash*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_slash*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_slash*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_slash*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_slash*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_slash*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_slash*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_slash*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_slash*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_slash*/)( variable[1] /*n_slash*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_slash*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_slash*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_slash*/)( variable[1] /*n_slash*/, variable[3]) /*PNode::parent=*/;
   }
   return_label294: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
@@ -8802,10 +8806,10 @@ void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label295: while(false);
   tracehead = trace.prev;
@@ -8820,16 +8824,16 @@ void parser_prod___APercentMethid___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentMethid___replace_child, LOCATE_parser_prod, 3642); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APercentMethid____n_percent(variable[4]) /*APercentMethid::_n_percent*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentMethid___replace_child, LOCATE_parser_prod, 3646); nit_exit(1);}
       variable[4] = variable[0];
@@ -8854,11 +8858,11 @@ void parser_prod___APercentMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label297: while(false);
   tracehead = trace.prev;
@@ -8874,11 +8878,11 @@ void parser_prod___APercentMethid___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label298: while(false);
   tracehead = trace.prev;
@@ -8907,13 +8911,13 @@ void parser_prod___APercentMethid___init_apercentmethid(val_t  self, val_t  para
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___APercentMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___APercentMethid___empty_init))(variable[3], init_table /*YYY*/) /*APercentMethid::empty_init*/;
+  CALL_parser_prod___APercentMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*APercentMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___APercentMethid____n_percent(variable[3]) /*APercentMethid::_n_percent*/ =  variable[1] /*n_percent*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_percent*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_percent*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_percent*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_percent*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_percent*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_percent*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_percent*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_percent*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_percent*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_percent*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_percent*/)( variable[1] /*n_percent*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_percent*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_percent*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_percent*/)( variable[1] /*n_percent*/, variable[3]) /*PNode::parent=*/;
   }
   return_label300: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
@@ -8930,10 +8934,10 @@ void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label301: while(false);
   tracehead = trace.prev;
@@ -8948,16 +8952,16 @@ void parser_prod___AEqMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqMethid___replace_child, LOCATE_parser_prod, 3693); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AEqMethid____n_eq(variable[4]) /*AEqMethid::_n_eq*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqMethid___replace_child, LOCATE_parser_prod, 3697); nit_exit(1);}
       variable[4] = variable[0];
@@ -8982,11 +8986,11 @@ void parser_prod___AEqMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label303: while(false);
   tracehead = trace.prev;
@@ -9002,11 +9006,11 @@ void parser_prod___AEqMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label304: while(false);
   tracehead = trace.prev;
@@ -9035,13 +9039,13 @@ void parser_prod___AEqMethid___init_aeqmethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AEqMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AEqMethid___empty_init))(variable[3], init_table /*YYY*/) /*AEqMethid::empty_init*/;
+  CALL_parser_prod___AEqMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AEqMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEqMethid____n_eq(variable[3]) /*AEqMethid::_n_eq*/ =  variable[1] /*n_eq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_eq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_eq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_eq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_eq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_eq*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_eq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_eq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_eq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_eq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_eq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_eq*/)( variable[1] /*n_eq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_eq*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_eq*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_eq*/)( variable[1] /*n_eq*/, variable[3]) /*PNode::parent=*/;
   }
   return_label306: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
@@ -9058,10 +9062,10 @@ void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label307: while(false);
   tracehead = trace.prev;
@@ -9076,16 +9080,16 @@ void parser_prod___ANeMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeMethid___replace_child, LOCATE_parser_prod, 3744); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANeMethid____n_ne(variable[4]) /*ANeMethid::_n_ne*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeMethid___replace_child, LOCATE_parser_prod, 3748); nit_exit(1);}
       variable[4] = variable[0];
@@ -9110,11 +9114,11 @@ void parser_prod___ANeMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label309: while(false);
   tracehead = trace.prev;
@@ -9130,11 +9134,11 @@ void parser_prod___ANeMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label310: while(false);
   tracehead = trace.prev;
@@ -9163,13 +9167,13 @@ void parser_prod___ANeMethid___init_anemethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ANeMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___ANeMethid___empty_init))(variable[3], init_table /*YYY*/) /*ANeMethid::empty_init*/;
+  CALL_parser_prod___ANeMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ANeMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANeMethid____n_ne(variable[3]) /*ANeMethid::_n_ne*/ =  variable[1] /*n_ne*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ne*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ne*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_ne*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_ne*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_ne*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ne*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ne*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_ne*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_ne*/)( variable[1] /*n_ne*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_ne*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_ne*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_ne*/)( variable[1] /*n_ne*/, variable[3]) /*PNode::parent=*/;
   }
   return_label312: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
@@ -9186,10 +9190,10 @@ void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label313: while(false);
   tracehead = trace.prev;
@@ -9204,16 +9208,16 @@ void parser_prod___ALeMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeMethid___replace_child, LOCATE_parser_prod, 3795); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ALeMethid____n_le(variable[4]) /*ALeMethid::_n_le*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeMethid___replace_child, LOCATE_parser_prod, 3799); nit_exit(1);}
       variable[4] = variable[0];
@@ -9238,11 +9242,11 @@ void parser_prod___ALeMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label315: while(false);
   tracehead = trace.prev;
@@ -9258,11 +9262,11 @@ void parser_prod___ALeMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label316: while(false);
   tracehead = trace.prev;
@@ -9291,13 +9295,13 @@ void parser_prod___ALeMethid___init_alemethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ALeMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___ALeMethid___empty_init))(variable[3], init_table /*YYY*/) /*ALeMethid::empty_init*/;
+  CALL_parser_prod___ALeMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ALeMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ALeMethid____n_le(variable[3]) /*ALeMethid::_n_le*/ =  variable[1] /*n_le*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_le*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_le*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_le*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_le*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_le*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_le*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_le*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_le*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_le*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_le*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_le*/)( variable[1] /*n_le*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_le*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_le*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_le*/)( variable[1] /*n_le*/, variable[3]) /*PNode::parent=*/;
   }
   return_label318: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
@@ -9314,10 +9318,10 @@ void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label319: while(false);
   tracehead = trace.prev;
@@ -9332,16 +9336,16 @@ void parser_prod___AGeMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeMethid___replace_child, LOCATE_parser_prod, 3846); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AGeMethid____n_ge(variable[4]) /*AGeMethid::_n_ge*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeMethid___replace_child, LOCATE_parser_prod, 3850); nit_exit(1);}
       variable[4] = variable[0];
@@ -9366,11 +9370,11 @@ void parser_prod___AGeMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label321: while(false);
   tracehead = trace.prev;
@@ -9386,11 +9390,11 @@ void parser_prod___AGeMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label322: while(false);
   tracehead = trace.prev;
@@ -9419,13 +9423,13 @@ void parser_prod___AGeMethid___init_agemethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AGeMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AGeMethid___empty_init))(variable[3], init_table /*YYY*/) /*AGeMethid::empty_init*/;
+  CALL_parser_prod___AGeMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AGeMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AGeMethid____n_ge(variable[3]) /*AGeMethid::_n_ge*/ =  variable[1] /*n_ge*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ge*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ge*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_ge*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ge*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_ge*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_ge*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_ge*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_ge*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_ge*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_ge*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_ge*/)( variable[1] /*n_ge*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_ge*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_ge*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_ge*/)( variable[1] /*n_ge*/, variable[3]) /*PNode::parent=*/;
   }
   return_label324: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
@@ -9442,10 +9446,10 @@ void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label325: while(false);
   tracehead = trace.prev;
@@ -9460,16 +9464,16 @@ void parser_prod___ALtMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtMethid___replace_child, LOCATE_parser_prod, 3897); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ALtMethid____n_lt(variable[4]) /*ALtMethid::_n_lt*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtMethid___replace_child, LOCATE_parser_prod, 3901); nit_exit(1);}
       variable[4] = variable[0];
@@ -9494,11 +9498,11 @@ void parser_prod___ALtMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label327: while(false);
   tracehead = trace.prev;
@@ -9514,11 +9518,11 @@ void parser_prod___ALtMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label328: while(false);
   tracehead = trace.prev;
@@ -9547,13 +9551,13 @@ void parser_prod___ALtMethid___init_altmethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ALtMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___ALtMethid___empty_init))(variable[3], init_table /*YYY*/) /*ALtMethid::empty_init*/;
+  CALL_parser_prod___ALtMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ALtMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ALtMethid____n_lt(variable[3]) /*ALtMethid::_n_lt*/ =  variable[1] /*n_lt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_lt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_lt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_lt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_lt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_lt*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_lt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_lt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_lt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_lt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_lt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_lt*/)( variable[1] /*n_lt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_lt*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_lt*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_lt*/)( variable[1] /*n_lt*/, variable[3]) /*PNode::parent=*/;
   }
   return_label330: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
@@ -9570,10 +9574,10 @@ void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label331: while(false);
   tracehead = trace.prev;
@@ -9588,16 +9592,16 @@ void parser_prod___AGtMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtMethid___replace_child, LOCATE_parser_prod, 3948); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AGtMethid____n_gt(variable[4]) /*AGtMethid::_n_gt*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtMethid___replace_child, LOCATE_parser_prod, 3952); nit_exit(1);}
       variable[4] = variable[0];
@@ -9622,11 +9626,11 @@ void parser_prod___AGtMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label333: while(false);
   tracehead = trace.prev;
@@ -9642,11 +9646,11 @@ void parser_prod___AGtMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label334: while(false);
   tracehead = trace.prev;
@@ -9675,13 +9679,13 @@ void parser_prod___AGtMethid___init_agtmethid(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AGtMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AGtMethid___empty_init))(variable[3], init_table /*YYY*/) /*AGtMethid::empty_init*/;
+  CALL_parser_prod___AGtMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AGtMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AGtMethid____n_gt(variable[3]) /*AGtMethid::_n_gt*/ =  variable[1] /*n_gt*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_gt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_gt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_gt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_gt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_gt*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_gt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_gt*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_gt*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_gt*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_gt*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_gt*/)( variable[1] /*n_gt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_gt*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_gt*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_gt*/)( variable[1] /*n_gt*/, variable[3]) /*PNode::parent=*/;
   }
   return_label336: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
@@ -9698,10 +9702,10 @@ void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABraMethid____n_obra(variable[3]) /*ABraMethid::_n_obra*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label337: while(false);
   tracehead = trace.prev;
@@ -9717,10 +9721,10 @@ void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABraMethid____n_cbra(variable[3]) /*ABraMethid::_n_cbra*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label338: while(false);
   tracehead = trace.prev;
@@ -9735,16 +9739,16 @@ void parser_prod___ABraMethid___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4011); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraMethid____n_obra(variable[4]) /*ABraMethid::_n_obra*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4015); nit_exit(1);}
       variable[4] = variable[0];
@@ -9757,12 +9761,12 @@ void parser_prod___ABraMethid___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[4]) /*ABraMethid::_n_cbra*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraMethid___replace_child, LOCATE_parser_prod, 4025); nit_exit(1);}
       variable[4] = variable[0];
@@ -9787,19 +9791,19 @@ void parser_prod___ABraMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[3]) /*ABraMethid::_n_obra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[3]) /*ABraMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[3]) /*ABraMethid::_n_cbra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[3]) /*ABraMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label340: while(false);
   tracehead = trace.prev;
@@ -9815,19 +9819,19 @@ void parser_prod___ABraMethid___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[3]) /*ABraMethid::_n_obra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraMethid____n_obra(variable[3]) /*ABraMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[3]) /*ABraMethid::_n_cbra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraMethid____n_cbra(variable[3]) /*ABraMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label341: while(false);
   tracehead = trace.prev;
@@ -9857,20 +9861,20 @@ void parser_prod___ABraMethid___init_abramethid(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ABraMethid___empty_init_t)CALL(variable[4],COLOR_parser_prod___ABraMethid___empty_init))(variable[4], init_table /*YYY*/) /*ABraMethid::empty_init*/;
+  CALL_parser_prod___ABraMethid___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ABraMethid::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ABraMethid____n_obra(variable[4]) /*ABraMethid::_n_obra*/ =  variable[1] /*n_obra*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_obra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_obra*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_obra*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_obra*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABraMethid____n_cbra(variable[4]) /*ABraMethid::_n_cbra*/ =  variable[2] /*n_cbra*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_cbra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_cbra*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_cbra*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_cbra*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/, variable[4]) /*PNode::parent=*/;
   }
   return_label343: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
@@ -9887,10 +9891,10 @@ void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label344: while(false);
   tracehead = trace.prev;
@@ -9905,16 +9909,16 @@ void parser_prod___AStarshipMethid___replace_child(val_t  self, val_t  param0, v
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipMethid___replace_child, LOCATE_parser_prod, 4078); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[4]) /*AStarshipMethid::_n_starship*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipMethid___replace_child, LOCATE_parser_prod, 4082); nit_exit(1);}
       variable[4] = variable[0];
@@ -9939,11 +9943,11 @@ void parser_prod___AStarshipMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label346: while(false);
   tracehead = trace.prev;
@@ -9959,11 +9963,11 @@ void parser_prod___AStarshipMethid___visit_all_reverse(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label347: while(false);
   tracehead = trace.prev;
@@ -9992,13 +9996,13 @@ void parser_prod___AStarshipMethid___init_astarshipmethid(val_t  self, val_t  pa
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AStarshipMethid___empty_init_t)CALL(variable[3],COLOR_parser_prod___AStarshipMethid___empty_init))(variable[3], init_table /*YYY*/) /*AStarshipMethid::empty_init*/;
+  CALL_parser_prod___AStarshipMethid___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AStarshipMethid::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStarshipMethid____n_starship(variable[3]) /*AStarshipMethid::_n_starship*/ =  variable[1] /*n_starship*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_starship*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_starship*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_starship*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_starship*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_starship*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_starship*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_starship*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_starship*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_starship*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_starship*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_starship*/)( variable[1] /*n_starship*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_starship*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_starship*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_starship*/)( variable[1] /*n_starship*/, variable[3]) /*PNode::parent=*/;
   }
   return_label349: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
@@ -10015,10 +10019,10 @@ void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignMethid____n_id(variable[3]) /*AAssignMethid::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label350: while(false);
   tracehead = trace.prev;
@@ -10034,10 +10038,10 @@ void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignMethid____n_assign(variable[3]) /*AAssignMethid::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label351: while(false);
   tracehead = trace.prev;
@@ -10052,16 +10056,16 @@ void parser_prod___AAssignMethid___replace_child(val_t  self, val_t  param0, val
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4141); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignMethid____n_id(variable[4]) /*AAssignMethid::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4145); nit_exit(1);}
       variable[4] = variable[0];
@@ -10074,12 +10078,12 @@ void parser_prod___AAssignMethid___replace_child(val_t  self, val_t  param0, val
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[4]) /*AAssignMethid::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssignMethid___replace_child, LOCATE_parser_prod, 4155); nit_exit(1);}
       variable[4] = variable[0];
@@ -10104,19 +10108,19 @@ void parser_prod___AAssignMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[3]) /*AAssignMethid::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[3]) /*AAssignMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[3]) /*AAssignMethid::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[3]) /*AAssignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label353: while(false);
   tracehead = trace.prev;
@@ -10132,19 +10136,19 @@ void parser_prod___AAssignMethid___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[3]) /*AAssignMethid::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignMethid____n_id(variable[3]) /*AAssignMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[3]) /*AAssignMethid::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignMethid____n_assign(variable[3]) /*AAssignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label354: while(false);
   tracehead = trace.prev;
@@ -10174,20 +10178,20 @@ void parser_prod___AAssignMethid___init_aassignmethid(val_t  self, val_t  param0
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AAssignMethid___empty_init_t)CALL(variable[4],COLOR_parser_prod___AAssignMethid___empty_init))(variable[4], init_table /*YYY*/) /*AAssignMethid::empty_init*/;
+  CALL_parser_prod___AAssignMethid___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AAssignMethid::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AAssignMethid____n_id(variable[4]) /*AAssignMethid::_n_id*/ =  variable[1] /*n_id*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AAssignMethid____n_assign(variable[4]) /*AAssignMethid::_n_assign*/ =  variable[2] /*n_assign*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_assign*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/, variable[4]) /*PNode::parent=*/;
   }
   return_label356: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
@@ -10204,10 +10208,10 @@ void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_obra(variable[3]) /*ABraassignMethid::_n_obra*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label357: while(false);
   tracehead = trace.prev;
@@ -10223,10 +10227,10 @@ void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[3]) /*ABraassignMethid::_n_cbra*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label358: while(false);
   tracehead = trace.prev;
@@ -10242,10 +10246,10 @@ void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_assign(variable[3]) /*ABraassignMethid::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label359: while(false);
   tracehead = trace.prev;
@@ -10260,16 +10264,16 @@ void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4232); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[4]) /*ABraassignMethid::_n_obra*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4236); nit_exit(1);}
       variable[4] = variable[0];
@@ -10282,12 +10286,12 @@ void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[4]) /*ABraassignMethid::_n_cbra*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4246); nit_exit(1);}
       variable[4] = variable[0];
@@ -10300,12 +10304,12 @@ void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[4]) /*ABraassignMethid::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraassignMethid___replace_child, LOCATE_parser_prod, 4256); nit_exit(1);}
       variable[4] = variable[0];
@@ -10330,27 +10334,27 @@ void parser_prod___ABraassignMethid___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[3]) /*ABraassignMethid::_n_obra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[3]) /*ABraassignMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[3]) /*ABraassignMethid::_n_cbra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[3]) /*ABraassignMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[3]) /*ABraassignMethid::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[3]) /*ABraassignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label361: while(false);
   tracehead = trace.prev;
@@ -10366,27 +10370,27 @@ void parser_prod___ABraassignMethid___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[3]) /*ABraassignMethid::_n_obra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_obra(variable[3]) /*ABraassignMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[3]) /*ABraassignMethid::_n_cbra*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[3]) /*ABraassignMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[3]) /*ABraassignMethid::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABraassignMethid____n_assign(variable[3]) /*ABraassignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label362: while(false);
   tracehead = trace.prev;
@@ -10417,27 +10421,27 @@ void parser_prod___ABraassignMethid___init_abraassignmethid(val_t  self, val_t
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___ABraassignMethid___empty_init_t)CALL(variable[5],COLOR_parser_prod___ABraassignMethid___empty_init))(variable[5], init_table /*YYY*/) /*ABraassignMethid::empty_init*/;
+  CALL_parser_prod___ABraassignMethid___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*ABraassignMethid::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_obra(variable[5]) /*ABraassignMethid::_n_obra*/ =  variable[1] /*n_obra*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_obra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_obra*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_obra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_obra*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_obra*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_obra*/)( variable[1] /*n_obra*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[5]) /*ABraassignMethid::_n_cbra*/ =  variable[2] /*n_cbra*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_cbra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_cbra*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_cbra*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_cbra*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_cbra*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_cbra*/)( variable[2] /*n_cbra*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___ABraassignMethid____n_assign(variable[5]) /*ABraassignMethid::_n_assign*/ =  variable[3] /*n_assign*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_assign*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[5]) /*PNode::parent=*/;
   }
   return_label364: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
@@ -10454,10 +10458,10 @@ void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASignature____n_type(variable[3]) /*ASignature::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label365: while(false);
   tracehead = trace.prev;
@@ -10472,52 +10476,52 @@ void parser_prod___ASignature___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4329); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[4]) /*ASignature::_n_params*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[7]) /*ASignature::_n_params*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ASignature___replace_child, LOCATE_parser_prod, 4333); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[7]) /*ASignature::_n_params*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASignature____n_params(variable[7]) /*ASignature::_n_params*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label366;
     }
     continue_367: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_367: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASignature____n_type(variable[4]) /*ASignature::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4345); nit_exit(1);}
       variable[4] = variable[0];
@@ -10530,38 +10534,38 @@ void parser_prod___ASignature___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[4]) /*ASignature::_n_closure_decls*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[7]) /*ASignature::_n_closure_decls*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ASignature___replace_child, LOCATE_parser_prod, 4355); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[7]) /*ASignature::_n_closure_decls*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[7]) /*ASignature::_n_closure_decls*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label366;
     }
     continue_368: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_368: while(0);
   return_label366: while(false);
@@ -10578,36 +10582,36 @@ void parser_prod___ASignature___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASignature____n_params(variable[3]) /*ASignature::_n_params*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_370: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_370: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[3]) /*ASignature::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[3]) /*ASignature::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[3]) /*ASignature::_n_closure_decls*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_371: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_371: while(0);
   return_label369: while(false);
@@ -10624,15 +10628,15 @@ void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[4]) /*ASignature::_n_params*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASignature____n_params(variable[4]) /*ASignature::_n_params*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_373: while(0);
@@ -10640,23 +10644,23 @@ void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
   break_373: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[3]) /*ASignature::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASignature____n_type(variable[3]) /*ASignature::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[4]) /*ASignature::_n_closure_decls*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[4]) /*ASignature::_n_closure_decls*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_374: while(0);
@@ -10691,52 +10695,52 @@ void parser_prod___ASignature___init_asignature(val_t  self, val_t  param0, val_
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASignature].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___ASignature___empty_init_t)CALL(variable[5],COLOR_parser_prod___ASignature___empty_init))(variable[5], init_table /*YYY*/) /*ASignature::empty_init*/;
+  CALL_parser_prod___ASignature___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*ASignature::empty_init*/;
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PParam]*/
   ATTR_parser_nodes___ASignature____n_params(variable[5]) /*ASignature::_n_params*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_params*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_params*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_params*/)( variable[1] /*n_params*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, 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_prod___ASignature___init_asignature, LOCATE_parser_prod, 4311); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___ASignature____n_params(variable[8]) /*ASignature::_n_params*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_377: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_377: while(0);
   variable[5] = variable[0];
   ATTR_parser_nodes___ASignature____n_type(variable[5]) /*ASignature::_n_type*/ =  variable[2] /*n_type*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PClosureDecl]*/
   ATTR_parser_nodes___ASignature____n_closure_decls(variable[5]) /*ASignature::_n_closure_decls*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_closure_decls*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_closure_decls*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_closure_decls*/)( variable[3] /*n_closure_decls*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
     if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___init_asignature, LOCATE_parser_prod, 4321); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___ASignature____n_closure_decls(variable[8]) /*ASignature::_n_closure_decls*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_378: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_378: while(0);
   return_label376: while(false);
@@ -10754,10 +10758,10 @@ void parser_prod___AParam___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PParam____n_id(variable[3]) /*PParam::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label379: while(false);
   tracehead = trace.prev;
@@ -10773,10 +10777,10 @@ void parser_prod___AParam___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___PParam____n_type(variable[3]) /*PParam::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label380: while(false);
   tracehead = trace.prev;
@@ -10792,10 +10796,10 @@ void parser_prod___AParam___n_dotdotdot__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AParam____n_dotdotdot(variable[3]) /*AParam::_n_dotdotdot*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label381: while(false);
   tracehead = trace.prev;
@@ -10810,16 +10814,16 @@ void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  par
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4448); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PParam____n_id(variable[4]) /*PParam::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4452); nit_exit(1);}
       variable[4] = variable[0];
@@ -10832,12 +10836,12 @@ void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  par
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___PParam____n_type(variable[4]) /*PParam::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4462); nit_exit(1);}
       variable[4] = variable[0];
@@ -10850,12 +10854,12 @@ void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  par
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[4]) /*AParam::_n_dotdotdot*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4472); nit_exit(1);}
       variable[4] = variable[0];
@@ -10880,27 +10884,27 @@ void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PParam____n_id(variable[3]) /*PParam::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PParam____n_id(variable[3]) /*PParam::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PParam____n_type(variable[3]) /*PParam::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PParam____n_type(variable[3]) /*PParam::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[3]) /*AParam::_n_dotdotdot*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[3]) /*AParam::_n_dotdotdot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label383: while(false);
   tracehead = trace.prev;
@@ -10916,27 +10920,27 @@ void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PParam____n_id(variable[3]) /*PParam::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PParam____n_id(variable[3]) /*PParam::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___PParam____n_type(variable[3]) /*PParam::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___PParam____n_type(variable[3]) /*PParam::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[3]) /*AParam::_n_dotdotdot*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AParam____n_dotdotdot(variable[3]) /*AParam::_n_dotdotdot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label384: while(false);
   tracehead = trace.prev;
@@ -10967,27 +10971,27 @@ void parser_prod___AParam___init_aparam(val_t  self, val_t  param0, val_t  param
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AParam___empty_init_t)CALL(variable[5],COLOR_parser_prod___AParam___empty_init))(variable[5], init_table /*YYY*/) /*AParam::empty_init*/;
+  CALL_parser_prod___AParam___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AParam::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___PParam____n_id(variable[5]) /*PParam::_n_id*/ =  variable[1] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___PParam____n_type(variable[5]) /*PParam::_n_type*/ =  variable[2] /*n_type*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AParam____n_dotdotdot(variable[5]) /*AParam::_n_dotdotdot*/ =  variable[3] /*n_dotdotdot*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_dotdotdot*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_dotdotdot*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_dotdotdot*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_dotdotdot*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_dotdotdot*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_dotdotdot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_dotdotdot*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_dotdotdot*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_dotdotdot*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_dotdotdot*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_dotdotdot*/)( variable[3] /*n_dotdotdot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_dotdotdot*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_dotdotdot*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_dotdotdot*/)( variable[3] /*n_dotdotdot*/, variable[5]) /*PNode::parent=*/;
   }
   return_label386: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParam].i] = 1;
@@ -11004,10 +11008,10 @@ void parser_prod___AClosureDecl___n_kwwith__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[3]) /*AClosureDecl::_n_kwwith*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label387: while(false);
   tracehead = trace.prev;
@@ -11023,10 +11027,10 @@ void parser_prod___AClosureDecl___n_kwbreak__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[3]) /*AClosureDecl::_n_kwbreak*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label388: while(false);
   tracehead = trace.prev;
@@ -11042,10 +11046,10 @@ void parser_prod___AClosureDecl___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_id(variable[3]) /*AClosureDecl::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label389: while(false);
   tracehead = trace.prev;
@@ -11061,10 +11065,10 @@ void parser_prod___AClosureDecl___n_signature__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_signature(variable[3]) /*AClosureDecl::_n_signature*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label390: while(false);
   tracehead = trace.prev;
@@ -11080,10 +11084,10 @@ void parser_prod___AClosureDecl___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_expr(variable[3]) /*AClosureDecl::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label391: while(false);
   tracehead = trace.prev;
@@ -11098,16 +11102,16 @@ void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4579); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[4]) /*AClosureDecl::_n_kwwith*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4583); nit_exit(1);}
       variable[4] = variable[0];
@@ -11120,12 +11124,12 @@ void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[4]) /*AClosureDecl::_n_kwbreak*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4593); nit_exit(1);}
       variable[4] = variable[0];
@@ -11138,12 +11142,12 @@ void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDecl____n_id(variable[4]) /*AClosureDecl::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4603); nit_exit(1);}
       variable[4] = variable[0];
@@ -11156,12 +11160,12 @@ void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[4]) /*AClosureDecl::_n_signature*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4613); nit_exit(1);}
       variable[4] = variable[0];
@@ -11174,12 +11178,12 @@ void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[4]) /*AClosureDecl::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDecl___replace_child, LOCATE_parser_prod, 4623); nit_exit(1);}
       variable[4] = variable[0];
@@ -11204,43 +11208,43 @@ void parser_prod___AClosureDecl___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[3]) /*AClosureDecl::_n_kwwith*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[3]) /*AClosureDecl::_n_kwwith*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[3]) /*AClosureDecl::_n_kwbreak*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[3]) /*AClosureDecl::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[3]) /*AClosureDecl::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[3]) /*AClosureDecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[3]) /*AClosureDecl::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[3]) /*AClosureDecl::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[3]) /*AClosureDecl::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[3]) /*AClosureDecl::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label393: while(false);
   tracehead = trace.prev;
@@ -11256,43 +11260,43 @@ void parser_prod___AClosureDecl___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[3]) /*AClosureDecl::_n_kwwith*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[3]) /*AClosureDecl::_n_kwwith*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[3]) /*AClosureDecl::_n_kwbreak*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[3]) /*AClosureDecl::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[3]) /*AClosureDecl::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_id(variable[3]) /*AClosureDecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[3]) /*AClosureDecl::_n_signature*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_signature(variable[3]) /*AClosureDecl::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[3]) /*AClosureDecl::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDecl____n_expr(variable[3]) /*AClosureDecl::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label394: while(false);
   tracehead = trace.prev;
@@ -11325,41 +11329,41 @@ void parser_prod___AClosureDecl___init_aclosuredecl(val_t  self, val_t  param0,
   variable[5] =  param4;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i]) return;
   variable[7] = variable[0];
-  ((parser_prod___AClosureDecl___empty_init_t)CALL(variable[7],COLOR_parser_prod___AClosureDecl___empty_init))(variable[7], init_table /*YYY*/) /*AClosureDecl::empty_init*/;
+  CALL_parser_prod___AClosureDecl___empty_init(variable[7])(variable[7], init_table /*YYY*/) /*AClosureDecl::empty_init*/;
   variable[7] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[7]) /*AClosureDecl::_n_kwwith*/ =  variable[1] /*n_kwwith*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwith*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwith*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwwith*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwwith*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[7]) /*AClosureDecl::_n_kwbreak*/ =  variable[2] /*n_kwbreak*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwbreak*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwbreak*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwbreak*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwbreak*/)( variable[2] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwbreak*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwbreak*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwbreak*/)( variable[2] /*n_kwbreak*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_id(variable[7]) /*AClosureDecl::_n_id*/ =  variable[3] /*n_id*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_id*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_signature(variable[7]) /*AClosureDecl::_n_signature*/ =  variable[4] /*n_signature*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_signature*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_signature*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_signature*/)( variable[4] /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_signature*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_signature*/)( variable[4] /*n_signature*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AClosureDecl____n_expr(variable[7]) /*AClosureDecl::_n_expr*/ =  variable[5] /*n_expr*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_expr*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/, variable[7]) /*PNode::parent=*/;
   }
   return_label396: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDecl].i] = 1;
@@ -11376,10 +11380,10 @@ void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AType____n_id(variable[3]) /*AType::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label397: while(false);
   tracehead = trace.prev;
@@ -11394,16 +11398,16 @@ void parser_prod___AType___replace_child(val_t  self, val_t  param0, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4701); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AType____n_id(variable[4]) /*AType::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4705); nit_exit(1);}
       variable[4] = variable[0];
@@ -11416,38 +11420,38 @@ void parser_prod___AType___replace_child(val_t  self, val_t  param0, val_t  para
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AType____n_types(variable[4]) /*AType::_n_types*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AType____n_types(variable[7]) /*AType::_n_types*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AType___replace_child, LOCATE_parser_prod, 4715); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AType____n_types(variable[7]) /*AType::_n_types*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AType____n_types(variable[7]) /*AType::_n_types*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label398;
     }
     continue_399: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_399: while(0);
   return_label398: while(false);
@@ -11464,23 +11468,23 @@ void parser_prod___AType___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AType____n_id(variable[3]) /*AType::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AType____n_id(variable[3]) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AType____n_types(variable[3]) /*AType::_n_types*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_401: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_401: while(0);
   return_label400: while(false);
@@ -11497,23 +11501,23 @@ void parser_prod___AType___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AType____n_id(variable[3]) /*AType::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AType____n_id(variable[3]) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AType____n_types(variable[4]) /*AType::_n_types*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AType____n_types(variable[4]) /*AType::_n_types*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_403: while(0);
@@ -11547,32 +11551,32 @@ void parser_prod___AType___init_atype(val_t  self, val_t  param0, val_t  param1,
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AType].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AType___empty_init_t)CALL(variable[4],COLOR_parser_prod___AType___empty_init))(variable[4], init_table /*YYY*/) /*AType::empty_init*/;
+  CALL_parser_prod___AType___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AType::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AType____n_id(variable[4]) /*AType::_n_id*/ =  variable[1] /*n_id*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   variable[5] = NEW_List_list___List___init(); /*new List[PType]*/
   ATTR_parser_nodes___AType____n_types(variable[4]) /*AType::_n_types*/ = variable[5];
-  variable[4] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_types*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_types*/) /*AbstractArray::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_types*/)( variable[2] /*n_types*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((array___ArrayIterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*ArrayIterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((array___ArrayIterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*ArrayIterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
     variable[6] = variable[5];
     variable[7] = TAG_Bool(( variable[6] /*n*/==NIT_NULL) || VAL_ISA( variable[6] /*n*/, 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_prod___AType___init_atype, LOCATE_parser_prod, 4693); nit_exit(1);}
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AType____n_types(variable[7]) /*AType::_n_types*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[7],COLOR_abstract_collection___SimpleCollection___add))(variable[7],  variable[6] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7],  variable[6] /*n*/) /*IndexedCollection::add*/;
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n*/)( variable[6] /*n*/, variable[7]) /*PNode::parent=*/;
     continue_406: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
   }
   break_406: while(0);
   return_label405: while(false);
@@ -11589,42 +11593,42 @@ void parser_prod___ABlockExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4769); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[4]) /*ABlockExpr::_n_expr*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[7]) /*ABlockExpr::_n_expr*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4773); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[7]) /*ABlockExpr::_n_expr*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[7]) /*ABlockExpr::_n_expr*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label407;
     }
     continue_408: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_408: while(0);
   return_label407: while(false);
@@ -11641,15 +11645,15 @@ void parser_prod___ABlockExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[3]) /*ABlockExpr::_n_expr*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_410: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_410: while(0);
   return_label409: while(false);
@@ -11666,15 +11670,15 @@ void parser_prod___ABlockExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[4]) /*ABlockExpr::_n_expr*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[4]) /*ABlockExpr::_n_expr*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_412: while(0);
@@ -11707,25 +11711,25 @@ void parser_prod___ABlockExpr___init_ablockexpr(val_t  self, val_t  param0, int*
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ABlockExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ABlockExpr___empty_init))(variable[3], init_table /*YYY*/) /*ABlockExpr::empty_init*/;
+  CALL_parser_prod___ABlockExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ABlockExpr::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ABlockExpr____n_expr(variable[3]) /*ABlockExpr::_n_expr*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_expr*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_expr*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_expr*/)( variable[1] /*n_expr*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, 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_prod___ABlockExpr___init_ablockexpr, LOCATE_parser_prod, 4761); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___ABlockExpr____n_expr(variable[6]) /*ABlockExpr::_n_expr*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_415: 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_415: while(0);
   return_label414: while(false);
@@ -11743,10 +11747,10 @@ void parser_prod___AVardeclExpr___n_kwvar__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[3]) /*AVardeclExpr::_n_kwvar*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label416: while(false);
   tracehead = trace.prev;
@@ -11762,10 +11766,10 @@ void parser_prod___AVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_id(variable[3]) /*AVardeclExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label417: while(false);
   tracehead = trace.prev;
@@ -11781,10 +11785,10 @@ void parser_prod___AVardeclExpr___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_type(variable[3]) /*AVardeclExpr::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label418: while(false);
   tracehead = trace.prev;
@@ -11800,10 +11804,10 @@ void parser_prod___AVardeclExpr___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_assign(variable[3]) /*AVardeclExpr::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label419: while(false);
   tracehead = trace.prev;
@@ -11819,10 +11823,10 @@ void parser_prod___AVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_expr(variable[3]) /*AVardeclExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label420: while(false);
   tracehead = trace.prev;
@@ -11837,16 +11841,16 @@ void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4874); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[4]) /*AVardeclExpr::_n_kwvar*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4878); nit_exit(1);}
       variable[4] = variable[0];
@@ -11859,12 +11863,12 @@ void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[4]) /*AVardeclExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4888); nit_exit(1);}
       variable[4] = variable[0];
@@ -11877,12 +11881,12 @@ void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[4]) /*AVardeclExpr::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4898); nit_exit(1);}
       variable[4] = variable[0];
@@ -11895,12 +11899,12 @@ void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[4]) /*AVardeclExpr::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4908); nit_exit(1);}
       variable[4] = variable[0];
@@ -11913,12 +11917,12 @@ void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[4]) /*AVardeclExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4918); nit_exit(1);}
       variable[4] = variable[0];
@@ -11943,43 +11947,43 @@ void parser_prod___AVardeclExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[3]) /*AVardeclExpr::_n_kwvar*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[3]) /*AVardeclExpr::_n_kwvar*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[3]) /*AVardeclExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[3]) /*AVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[3]) /*AVardeclExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[3]) /*AVardeclExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[3]) /*AVardeclExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[3]) /*AVardeclExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[3]) /*AVardeclExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[3]) /*AVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label422: while(false);
   tracehead = trace.prev;
@@ -11995,43 +11999,43 @@ void parser_prod___AVardeclExpr___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[3]) /*AVardeclExpr::_n_kwvar*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[3]) /*AVardeclExpr::_n_kwvar*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[3]) /*AVardeclExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_id(variable[3]) /*AVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[3]) /*AVardeclExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_type(variable[3]) /*AVardeclExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[3]) /*AVardeclExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_assign(variable[3]) /*AVardeclExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[3]) /*AVardeclExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVardeclExpr____n_expr(variable[3]) /*AVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label423: while(false);
   tracehead = trace.prev;
@@ -12064,41 +12068,41 @@ void parser_prod___AVardeclExpr___init_avardeclexpr(val_t  self, val_t  param0,
   variable[5] =  param4;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
   variable[7] = variable[0];
-  ((parser_prod___AVardeclExpr___empty_init_t)CALL(variable[7],COLOR_parser_prod___AVardeclExpr___empty_init))(variable[7], init_table /*YYY*/) /*AVardeclExpr::empty_init*/;
+  CALL_parser_prod___AVardeclExpr___empty_init(variable[7])(variable[7], init_table /*YYY*/) /*AVardeclExpr::empty_init*/;
   variable[7] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[7]) /*AVardeclExpr::_n_kwvar*/ =  variable[1] /*n_kwvar*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwvar*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwvar*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwvar*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwvar*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwvar*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwvar*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwvar*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwvar*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwvar*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwvar*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwvar*/)( variable[1] /*n_kwvar*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwvar*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwvar*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwvar*/)( variable[1] /*n_kwvar*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_id(variable[7]) /*AVardeclExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_type(variable[7]) /*AVardeclExpr::_n_type*/ =  variable[3] /*n_type*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_type*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_type*/)( variable[3] /*n_type*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_assign(variable[7]) /*AVardeclExpr::_n_assign*/ =  variable[4] /*n_assign*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_assign*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AVardeclExpr____n_expr(variable[7]) /*AVardeclExpr::_n_expr*/ =  variable[5] /*n_expr*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_expr*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_expr*/)( variable[5] /*n_expr*/, variable[7]) /*PNode::parent=*/;
   }
   return_label425: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
@@ -12115,10 +12119,10 @@ void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[3]) /*AReturnExpr::_n_kwreturn*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label426: while(false);
   tracehead = trace.prev;
@@ -12134,10 +12138,10 @@ void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReturnExpr____n_expr(variable[3]) /*AReturnExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label427: while(false);
   tracehead = trace.prev;
@@ -12152,16 +12156,16 @@ void parser_prod___AReturnExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5001); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[4]) /*AReturnExpr::_n_kwreturn*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5005); nit_exit(1);}
       variable[4] = variable[0];
@@ -12174,12 +12178,12 @@ void parser_prod___AReturnExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[4]) /*AReturnExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 5015); nit_exit(1);}
       variable[4] = variable[0];
@@ -12204,19 +12208,19 @@ void parser_prod___AReturnExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[3]) /*AReturnExpr::_n_kwreturn*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[3]) /*AReturnExpr::_n_kwreturn*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[3]) /*AReturnExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[3]) /*AReturnExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label429: while(false);
   tracehead = trace.prev;
@@ -12232,19 +12236,19 @@ void parser_prod___AReturnExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[3]) /*AReturnExpr::_n_kwreturn*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[3]) /*AReturnExpr::_n_kwreturn*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[3]) /*AReturnExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReturnExpr____n_expr(variable[3]) /*AReturnExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label430: while(false);
   tracehead = trace.prev;
@@ -12274,20 +12278,20 @@ void parser_prod___AReturnExpr___init_areturnexpr(val_t  self, val_t  param0, va
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AReturnExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AReturnExpr___empty_init))(variable[4], init_table /*YYY*/) /*AReturnExpr::empty_init*/;
+  CALL_parser_prod___AReturnExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AReturnExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[4]) /*AReturnExpr::_n_kwreturn*/ =  variable[1] /*n_kwreturn*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwreturn*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwreturn*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwreturn*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwreturn*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwreturn*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwreturn*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwreturn*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwreturn*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwreturn*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwreturn*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwreturn*/)( variable[1] /*n_kwreturn*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwreturn*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwreturn*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwreturn*/)( variable[1] /*n_kwreturn*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AReturnExpr____n_expr(variable[4]) /*AReturnExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label432: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
@@ -12304,10 +12308,10 @@ void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[3]) /*ABreakExpr::_n_kwbreak*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label433: while(false);
   tracehead = trace.prev;
@@ -12323,10 +12327,10 @@ void parser_prod___ABreakExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABreakExpr____n_expr(variable[3]) /*ABreakExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label434: while(false);
   tracehead = trace.prev;
@@ -12341,16 +12345,16 @@ void parser_prod___ABreakExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5080); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[4]) /*ABreakExpr::_n_kwbreak*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5084); nit_exit(1);}
       variable[4] = variable[0];
@@ -12363,12 +12367,12 @@ void parser_prod___ABreakExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[4]) /*ABreakExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 5094); nit_exit(1);}
       variable[4] = variable[0];
@@ -12393,19 +12397,19 @@ void parser_prod___ABreakExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[3]) /*ABreakExpr::_n_kwbreak*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[3]) /*ABreakExpr::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[3]) /*ABreakExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[3]) /*ABreakExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label436: while(false);
   tracehead = trace.prev;
@@ -12421,19 +12425,19 @@ void parser_prod___ABreakExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[3]) /*ABreakExpr::_n_kwbreak*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[3]) /*ABreakExpr::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[3]) /*ABreakExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABreakExpr____n_expr(variable[3]) /*ABreakExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label437: while(false);
   tracehead = trace.prev;
@@ -12463,20 +12467,20 @@ void parser_prod___ABreakExpr___init_abreakexpr(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ABreakExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ABreakExpr___empty_init))(variable[4], init_table /*YYY*/) /*ABreakExpr::empty_init*/;
+  CALL_parser_prod___ABreakExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ABreakExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[4]) /*ABreakExpr::_n_kwbreak*/ =  variable[1] /*n_kwbreak*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwbreak*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwbreak*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwbreak*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwbreak*/)( variable[1] /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwbreak*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwbreak*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwbreak*/)( variable[1] /*n_kwbreak*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABreakExpr____n_expr(variable[4]) /*ABreakExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label439: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
@@ -12493,10 +12497,10 @@ void parser_prod___AAbortExpr___n_kwabort__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label440: while(false);
   tracehead = trace.prev;
@@ -12511,16 +12515,16 @@ void parser_prod___AAbortExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 5147); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[4]) /*AAbortExpr::_n_kwabort*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 5151); nit_exit(1);}
       variable[4] = variable[0];
@@ -12545,11 +12549,11 @@ void parser_prod___AAbortExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label442: while(false);
   tracehead = trace.prev;
@@ -12565,11 +12569,11 @@ void parser_prod___AAbortExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label443: while(false);
   tracehead = trace.prev;
@@ -12598,13 +12602,13 @@ void parser_prod___AAbortExpr___init_aabortexpr(val_t  self, val_t  param0, int*
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AAbortExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AAbortExpr___empty_init))(variable[3], init_table /*YYY*/) /*AAbortExpr::empty_init*/;
+  CALL_parser_prod___AAbortExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AAbortExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[3]) /*AAbortExpr::_n_kwabort*/ =  variable[1] /*n_kwabort*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabort*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabort*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwabort*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabort*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwabort*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwabort*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwabort*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwabort*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwabort*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwabort*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwabort*/)( variable[1] /*n_kwabort*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwabort*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwabort*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwabort*/)( variable[1] /*n_kwabort*/, variable[3]) /*PNode::parent=*/;
   }
   return_label445: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
@@ -12621,10 +12625,10 @@ void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[3]) /*AContinueExpr::_n_kwcontinue*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label446: while(false);
   tracehead = trace.prev;
@@ -12640,10 +12644,10 @@ void parser_prod___AContinueExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AContinueExpr____n_expr(variable[3]) /*AContinueExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label447: while(false);
   tracehead = trace.prev;
@@ -12658,16 +12662,16 @@ void parser_prod___AContinueExpr___replace_child(val_t  self, val_t  param0, val
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5210); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[4]) /*AContinueExpr::_n_kwcontinue*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5214); nit_exit(1);}
       variable[4] = variable[0];
@@ -12680,12 +12684,12 @@ void parser_prod___AContinueExpr___replace_child(val_t  self, val_t  param0, val
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[4]) /*AContinueExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 5224); nit_exit(1);}
       variable[4] = variable[0];
@@ -12710,19 +12714,19 @@ void parser_prod___AContinueExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[3]) /*AContinueExpr::_n_kwcontinue*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[3]) /*AContinueExpr::_n_kwcontinue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[3]) /*AContinueExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[3]) /*AContinueExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label449: while(false);
   tracehead = trace.prev;
@@ -12738,19 +12742,19 @@ void parser_prod___AContinueExpr___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[3]) /*AContinueExpr::_n_kwcontinue*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[3]) /*AContinueExpr::_n_kwcontinue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[3]) /*AContinueExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AContinueExpr____n_expr(variable[3]) /*AContinueExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label450: while(false);
   tracehead = trace.prev;
@@ -12780,20 +12784,20 @@ void parser_prod___AContinueExpr___init_acontinueexpr(val_t  self, val_t  param0
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AContinueExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AContinueExpr___empty_init))(variable[4], init_table /*YYY*/) /*AContinueExpr::empty_init*/;
+  CALL_parser_prod___AContinueExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AContinueExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[4]) /*AContinueExpr::_n_kwcontinue*/ =  variable[1] /*n_kwcontinue*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwcontinue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwcontinue*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwcontinue*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwcontinue*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwcontinue*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwcontinue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwcontinue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwcontinue*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwcontinue*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwcontinue*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwcontinue*/)( variable[1] /*n_kwcontinue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwcontinue*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwcontinue*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwcontinue*/)( variable[1] /*n_kwcontinue*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AContinueExpr____n_expr(variable[4]) /*AContinueExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label452: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
@@ -12810,10 +12814,10 @@ void parser_prod___ADoExpr___n_kwdo__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ADoExpr____n_kwdo(variable[3]) /*ADoExpr::_n_kwdo*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label453: while(false);
   tracehead = trace.prev;
@@ -12829,10 +12833,10 @@ void parser_prod___ADoExpr___n_block__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ADoExpr____n_block(variable[3]) /*ADoExpr::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label454: while(false);
   tracehead = trace.prev;
@@ -12847,16 +12851,16 @@ void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5289); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[4]) /*ADoExpr::_n_kwdo*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5293); nit_exit(1);}
       variable[4] = variable[0];
@@ -12869,12 +12873,12 @@ void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ADoExpr____n_block(variable[4]) /*ADoExpr::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5303); nit_exit(1);}
       variable[4] = variable[0];
@@ -12899,19 +12903,19 @@ void parser_prod___ADoExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[3]) /*ADoExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[3]) /*ADoExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[3]) /*ADoExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[3]) /*ADoExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label456: while(false);
   tracehead = trace.prev;
@@ -12927,19 +12931,19 @@ void parser_prod___ADoExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[3]) /*ADoExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADoExpr____n_kwdo(variable[3]) /*ADoExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[3]) /*ADoExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ADoExpr____n_block(variable[3]) /*ADoExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label457: while(false);
   tracehead = trace.prev;
@@ -12969,20 +12973,20 @@ void parser_prod___ADoExpr___init_adoexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ADoExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ADoExpr___empty_init))(variable[4], init_table /*YYY*/) /*ADoExpr::empty_init*/;
+  CALL_parser_prod___ADoExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ADoExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ADoExpr____n_kwdo(variable[4]) /*ADoExpr::_n_kwdo*/ =  variable[1] /*n_kwdo*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwdo*/)( variable[1] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwdo*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwdo*/)( variable[1] /*n_kwdo*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ADoExpr____n_block(variable[4]) /*ADoExpr::_n_block*/ =  variable[2] /*n_block*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_block*/)( variable[2] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_block*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_block*/)( variable[2] /*n_block*/, variable[4]) /*PNode::parent=*/;
   }
   return_label459: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
@@ -12999,10 +13003,10 @@ void parser_prod___AIfExpr___n_kwif__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_kwif(variable[3]) /*AIfExpr::_n_kwif*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label460: while(false);
   tracehead = trace.prev;
@@ -13018,10 +13022,10 @@ void parser_prod___AIfExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_expr(variable[3]) /*AIfExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label461: while(false);
   tracehead = trace.prev;
@@ -13037,10 +13041,10 @@ void parser_prod___AIfExpr___n_then__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_then(variable[3]) /*AIfExpr::_n_then*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label462: while(false);
   tracehead = trace.prev;
@@ -13056,10 +13060,10 @@ void parser_prod___AIfExpr___n_else__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_else(variable[3]) /*AIfExpr::_n_else*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label463: while(false);
   tracehead = trace.prev;
@@ -13074,16 +13078,16 @@ void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5392); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[4]) /*AIfExpr::_n_kwif*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5396); nit_exit(1);}
       variable[4] = variable[0];
@@ -13096,12 +13100,12 @@ void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfExpr____n_expr(variable[4]) /*AIfExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5406); nit_exit(1);}
       variable[4] = variable[0];
@@ -13114,12 +13118,12 @@ void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfExpr____n_then(variable[4]) /*AIfExpr::_n_then*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5416); nit_exit(1);}
       variable[4] = variable[0];
@@ -13132,12 +13136,12 @@ void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfExpr____n_else(variable[4]) /*AIfExpr::_n_else*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5426); nit_exit(1);}
       variable[4] = variable[0];
@@ -13162,35 +13166,35 @@ void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[3]) /*AIfExpr::_n_kwif*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[3]) /*AIfExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[3]) /*AIfExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[3]) /*AIfExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[3]) /*AIfExpr::_n_then*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[3]) /*AIfExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[3]) /*AIfExpr::_n_else*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[3]) /*AIfExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label465: while(false);
   tracehead = trace.prev;
@@ -13206,35 +13210,35 @@ void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[3]) /*AIfExpr::_n_kwif*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_kwif(variable[3]) /*AIfExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[3]) /*AIfExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_expr(variable[3]) /*AIfExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[3]) /*AIfExpr::_n_then*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_then(variable[3]) /*AIfExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[3]) /*AIfExpr::_n_else*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfExpr____n_else(variable[3]) /*AIfExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label466: while(false);
   tracehead = trace.prev;
@@ -13266,34 +13270,34 @@ void parser_prod___AIfExpr___init_aifexpr(val_t  self, val_t  param0, val_t  par
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___AIfExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___AIfExpr___empty_init))(variable[6], init_table /*YYY*/) /*AIfExpr::empty_init*/;
+  CALL_parser_prod___AIfExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*AIfExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_kwif(variable[6]) /*AIfExpr::_n_kwif*/ =  variable[1] /*n_kwif*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwif*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwif*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwif*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwif*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_expr(variable[6]) /*AIfExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_then(variable[6]) /*AIfExpr::_n_then*/ =  variable[3] /*n_then*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_then*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_then*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_then*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_then*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_then*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_then*/)( variable[3] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_then*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_then*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_then*/)( variable[3] /*n_then*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AIfExpr____n_else(variable[6]) /*AIfExpr::_n_else*/ =  variable[4] /*n_else*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_else*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_else*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_else*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_else*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_else*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_else*/)( variable[4] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_else*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_else*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_else*/)( variable[4] /*n_else*/, variable[6]) /*PNode::parent=*/;
   }
   return_label468: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
@@ -13310,10 +13314,10 @@ void parser_prod___AIfexprExpr___n_kwif__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[3]) /*AIfexprExpr::_n_kwif*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label469: while(false);
   tracehead = trace.prev;
@@ -13329,10 +13333,10 @@ void parser_prod___AIfexprExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_expr(variable[3]) /*AIfexprExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label470: while(false);
   tracehead = trace.prev;
@@ -13348,10 +13352,10 @@ void parser_prod___AIfexprExpr___n_kwthen__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[3]) /*AIfexprExpr::_n_kwthen*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label471: while(false);
   tracehead = trace.prev;
@@ -13367,10 +13371,10 @@ void parser_prod___AIfexprExpr___n_then__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_then(variable[3]) /*AIfexprExpr::_n_then*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label472: while(false);
   tracehead = trace.prev;
@@ -13386,10 +13390,10 @@ void parser_prod___AIfexprExpr___n_kwelse__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[3]) /*AIfexprExpr::_n_kwelse*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label473: while(false);
   tracehead = trace.prev;
@@ -13405,10 +13409,10 @@ void parser_prod___AIfexprExpr___n_else__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_else(variable[3]) /*AIfexprExpr::_n_else*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label474: while(false);
   tracehead = trace.prev;
@@ -13423,16 +13427,16 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5551); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[4]) /*AIfexprExpr::_n_kwif*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5555); nit_exit(1);}
       variable[4] = variable[0];
@@ -13445,12 +13449,12 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[4]) /*AIfexprExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5565); nit_exit(1);}
       variable[4] = variable[0];
@@ -13463,12 +13467,12 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[4]) /*AIfexprExpr::_n_kwthen*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5575); nit_exit(1);}
       variable[4] = variable[0];
@@ -13481,12 +13485,12 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[4]) /*AIfexprExpr::_n_then*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5585); nit_exit(1);}
       variable[4] = variable[0];
@@ -13499,12 +13503,12 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[4]) /*AIfexprExpr::_n_kwelse*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5595); nit_exit(1);}
       variable[4] = variable[0];
@@ -13517,12 +13521,12 @@ void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[4]) /*AIfexprExpr::_n_else*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5605); nit_exit(1);}
       variable[4] = variable[0];
@@ -13547,51 +13551,51 @@ void parser_prod___AIfexprExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[3]) /*AIfexprExpr::_n_kwif*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[3]) /*AIfexprExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[3]) /*AIfexprExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[3]) /*AIfexprExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[3]) /*AIfexprExpr::_n_kwthen*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[3]) /*AIfexprExpr::_n_kwthen*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[3]) /*AIfexprExpr::_n_then*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[3]) /*AIfexprExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[3]) /*AIfexprExpr::_n_kwelse*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[3]) /*AIfexprExpr::_n_kwelse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[3]) /*AIfexprExpr::_n_else*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[3]) /*AIfexprExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label476: while(false);
   tracehead = trace.prev;
@@ -13607,51 +13611,51 @@ void parser_prod___AIfexprExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[3]) /*AIfexprExpr::_n_kwif*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[3]) /*AIfexprExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[3]) /*AIfexprExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_expr(variable[3]) /*AIfexprExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[3]) /*AIfexprExpr::_n_kwthen*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[3]) /*AIfexprExpr::_n_kwthen*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[3]) /*AIfexprExpr::_n_then*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_then(variable[3]) /*AIfexprExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[3]) /*AIfexprExpr::_n_kwelse*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[3]) /*AIfexprExpr::_n_kwelse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[3]) /*AIfexprExpr::_n_else*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIfexprExpr____n_else(variable[3]) /*AIfexprExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label477: while(false);
   tracehead = trace.prev;
@@ -13685,48 +13689,48 @@ void parser_prod___AIfexprExpr___init_aifexprexpr(val_t  self, val_t  param0, va
   variable[6] =  param5;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
   variable[8] = variable[0];
-  ((parser_prod___AIfexprExpr___empty_init_t)CALL(variable[8],COLOR_parser_prod___AIfexprExpr___empty_init))(variable[8], init_table /*YYY*/) /*AIfexprExpr::empty_init*/;
+  CALL_parser_prod___AIfexprExpr___empty_init(variable[8])(variable[8], init_table /*YYY*/) /*AIfexprExpr::empty_init*/;
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[8]) /*AIfexprExpr::_n_kwif*/ =  variable[1] /*n_kwif*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwif*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwif*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwif*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwif*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwif*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwif*/)( variable[1] /*n_kwif*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_expr(variable[8]) /*AIfexprExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[8]) /*AIfexprExpr::_n_kwthen*/ =  variable[3] /*n_kwthen*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwthen*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwthen*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwthen*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwthen*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwthen*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_kwthen*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwthen*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwthen*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwthen*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwthen*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwthen*/)( variable[3] /*n_kwthen*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_kwthen*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_kwthen*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwthen*/)( variable[3] /*n_kwthen*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_then(variable[8]) /*AIfexprExpr::_n_then*/ =  variable[4] /*n_then*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_then*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_then*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_then*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_then*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_then*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_then*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_then*/)( variable[4] /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_then*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_then*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_then*/)( variable[4] /*n_then*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[8]) /*AIfexprExpr::_n_kwelse*/ =  variable[5] /*n_kwelse*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_kwelse*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_kwelse*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_kwelse*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_kwelse*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_kwelse*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_kwelse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_kwelse*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_kwelse*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_kwelse*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_kwelse*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_kwelse*/)( variable[5] /*n_kwelse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_kwelse*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_kwelse*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_kwelse*/)( variable[5] /*n_kwelse*/, variable[8]) /*PNode::parent=*/;
   }
   variable[8] = variable[0];
   ATTR_parser_nodes___AIfexprExpr____n_else(variable[8]) /*AIfexprExpr::_n_else*/ =  variable[6] /*n_else*/;
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_else*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[6] /*n_else*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[6] /*n_else*/,COLOR_kernel___Object_____eqeq))( variable[6] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*n_else*/ ==  NIT_NULL /*null*/) || (( variable[6] /*n_else*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*n_else*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*n_else*/)( variable[6] /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[8])) { /*if*/
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n_else*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n_else*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n_else*/)( variable[6] /*n_else*/, variable[8]) /*PNode::parent=*/;
   }
   return_label479: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
@@ -13743,10 +13747,10 @@ void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[3]) /*AWhileExpr::_n_kwwhile*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label480: while(false);
   tracehead = trace.prev;
@@ -13762,10 +13766,10 @@ void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_expr(variable[3]) /*AWhileExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label481: while(false);
   tracehead = trace.prev;
@@ -13781,10 +13785,10 @@ void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[3]) /*AWhileExpr::_n_kwdo*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label482: while(false);
   tracehead = trace.prev;
@@ -13800,10 +13804,10 @@ void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_block(variable[3]) /*AWhileExpr::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label483: while(false);
   tracehead = trace.prev;
@@ -13818,16 +13822,16 @@ void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5718); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[4]) /*AWhileExpr::_n_kwwhile*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5722); nit_exit(1);}
       variable[4] = variable[0];
@@ -13840,12 +13844,12 @@ void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[4]) /*AWhileExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5732); nit_exit(1);}
       variable[4] = variable[0];
@@ -13858,12 +13862,12 @@ void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[4]) /*AWhileExpr::_n_kwdo*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5742); nit_exit(1);}
       variable[4] = variable[0];
@@ -13876,12 +13880,12 @@ void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AWhileExpr____n_block(variable[4]) /*AWhileExpr::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5752); nit_exit(1);}
       variable[4] = variable[0];
@@ -13906,35 +13910,35 @@ void parser_prod___AWhileExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[3]) /*AWhileExpr::_n_kwwhile*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[3]) /*AWhileExpr::_n_kwwhile*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[3]) /*AWhileExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[3]) /*AWhileExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[3]) /*AWhileExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[3]) /*AWhileExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[3]) /*AWhileExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[3]) /*AWhileExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label485: while(false);
   tracehead = trace.prev;
@@ -13950,35 +13954,35 @@ void parser_prod___AWhileExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[3]) /*AWhileExpr::_n_kwwhile*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[3]) /*AWhileExpr::_n_kwwhile*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[3]) /*AWhileExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_expr(variable[3]) /*AWhileExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[3]) /*AWhileExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[3]) /*AWhileExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[3]) /*AWhileExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AWhileExpr____n_block(variable[3]) /*AWhileExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label486: while(false);
   tracehead = trace.prev;
@@ -14010,34 +14014,34 @@ void parser_prod___AWhileExpr___init_awhileexpr(val_t  self, val_t  param0, val_
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___AWhileExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___AWhileExpr___empty_init))(variable[6], init_table /*YYY*/) /*AWhileExpr::empty_init*/;
+  CALL_parser_prod___AWhileExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*AWhileExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[6]) /*AWhileExpr::_n_kwwhile*/ =  variable[1] /*n_kwwhile*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwhile*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwhile*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwhile*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwhile*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwhile*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwwhile*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwhile*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwhile*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwhile*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwhile*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwhile*/)( variable[1] /*n_kwwhile*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwwhile*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwwhile*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwhile*/)( variable[1] /*n_kwwhile*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_expr(variable[6]) /*AWhileExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[6]) /*AWhileExpr::_n_kwdo*/ =  variable[3] /*n_kwdo*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_kwdo*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AWhileExpr____n_block(variable[6]) /*AWhileExpr::_n_block*/ =  variable[4] /*n_block*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_block*/)( variable[4] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_block*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_block*/)( variable[4] /*n_block*/, variable[6]) /*PNode::parent=*/;
   }
   return_label488: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
@@ -14054,10 +14058,10 @@ void parser_prod___AForExpr___n_vardecl__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForExpr____n_vardecl(variable[3]) /*AForExpr::_n_vardecl*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label489: while(false);
   tracehead = trace.prev;
@@ -14073,10 +14077,10 @@ void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForExpr____n_kwdo(variable[3]) /*AForExpr::_n_kwdo*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label490: while(false);
   tracehead = trace.prev;
@@ -14092,10 +14096,10 @@ void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForExpr____n_block(variable[3]) /*AForExpr::_n_block*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label491: while(false);
   tracehead = trace.prev;
@@ -14110,16 +14114,16 @@ void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5841); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForExpr____n_vardecl(variable[4]) /*AForExpr::_n_vardecl*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5845); nit_exit(1);}
       variable[4] = variable[0];
@@ -14132,12 +14136,12 @@ void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[4]) /*AForExpr::_n_kwdo*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5855); nit_exit(1);}
       variable[4] = variable[0];
@@ -14150,12 +14154,12 @@ void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForExpr____n_block(variable[4]) /*AForExpr::_n_block*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5865); nit_exit(1);}
       variable[4] = variable[0];
@@ -14180,27 +14184,27 @@ void parser_prod___AForExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_vardecl(variable[3]) /*AForExpr::_n_vardecl*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_vardecl(variable[3]) /*AForExpr::_n_vardecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[3]) /*AForExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[3]) /*AForExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[3]) /*AForExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[3]) /*AForExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label493: while(false);
   tracehead = trace.prev;
@@ -14216,27 +14220,27 @@ void parser_prod___AForExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_vardecl(variable[3]) /*AForExpr::_n_vardecl*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_vardecl(variable[3]) /*AForExpr::_n_vardecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[3]) /*AForExpr::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_kwdo(variable[3]) /*AForExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[3]) /*AForExpr::_n_block*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForExpr____n_block(variable[3]) /*AForExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label494: while(false);
   tracehead = trace.prev;
@@ -14267,27 +14271,27 @@ void parser_prod___AForExpr___init_aforexpr(val_t  self, val_t  param0, val_t  p
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AForExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AForExpr___empty_init))(variable[5], init_table /*YYY*/) /*AForExpr::empty_init*/;
+  CALL_parser_prod___AForExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AForExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AForExpr____n_vardecl(variable[5]) /*AForExpr::_n_vardecl*/ =  variable[1] /*n_vardecl*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_vardecl*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_vardecl*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_vardecl*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_vardecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_vardecl*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_vardecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_vardecl*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_vardecl*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_vardecl*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_vardecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_vardecl*/)( variable[1] /*n_vardecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_vardecl*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_vardecl*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_vardecl*/)( variable[1] /*n_vardecl*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AForExpr____n_kwdo(variable[5]) /*AForExpr::_n_kwdo*/ =  variable[2] /*n_kwdo*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwdo*/)( variable[2] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwdo*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwdo*/)( variable[2] /*n_kwdo*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AForExpr____n_block(variable[5]) /*AForExpr::_n_block*/ =  variable[3] /*n_block*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_block*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_block*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_block*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_block*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_block*/)( variable[3] /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_block*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_block*/)( variable[3] /*n_block*/, variable[5]) /*PNode::parent=*/;
   }
   return_label496: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForExpr].i] = 1;
@@ -14304,10 +14308,10 @@ void parser_prod___AForVardeclExpr___n_kwfor__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[3]) /*AForVardeclExpr::_n_kwfor*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label497: while(false);
   tracehead = trace.prev;
@@ -14323,10 +14327,10 @@ void parser_prod___AForVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_id(variable[3]) /*AForVardeclExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label498: while(false);
   tracehead = trace.prev;
@@ -14342,10 +14346,10 @@ void parser_prod___AForVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[3]) /*AForVardeclExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label499: while(false);
   tracehead = trace.prev;
@@ -14360,16 +14364,16 @@ void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, v
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5948); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[4]) /*AForVardeclExpr::_n_kwfor*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5952); nit_exit(1);}
       variable[4] = variable[0];
@@ -14382,12 +14386,12 @@ void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForVardeclExpr____n_id(variable[4]) /*AForVardeclExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5962); nit_exit(1);}
       variable[4] = variable[0];
@@ -14400,12 +14404,12 @@ void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[4]) /*AForVardeclExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5972); nit_exit(1);}
       variable[4] = variable[0];
@@ -14430,27 +14434,27 @@ void parser_prod___AForVardeclExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[3]) /*AForVardeclExpr::_n_kwfor*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[3]) /*AForVardeclExpr::_n_kwfor*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_id(variable[3]) /*AForVardeclExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_id(variable[3]) /*AForVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[3]) /*AForVardeclExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[3]) /*AForVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label501: while(false);
   tracehead = trace.prev;
@@ -14466,27 +14470,27 @@ void parser_prod___AForVardeclExpr___visit_all_reverse(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[3]) /*AForVardeclExpr::_n_kwfor*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[3]) /*AForVardeclExpr::_n_kwfor*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_id(variable[3]) /*AForVardeclExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_id(variable[3]) /*AForVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[3]) /*AForVardeclExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[3]) /*AForVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label502: while(false);
   tracehead = trace.prev;
@@ -14517,27 +14521,27 @@ void parser_prod___AForVardeclExpr___init_aforvardeclexpr(val_t  self, val_t  pa
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForVardeclExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AForVardeclExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AForVardeclExpr___empty_init))(variable[5], init_table /*YYY*/) /*AForVardeclExpr::empty_init*/;
+  CALL_parser_prod___AForVardeclExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AForVardeclExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[5]) /*AForVardeclExpr::_n_kwfor*/ =  variable[1] /*n_kwfor*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfor*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfor*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwfor*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfor*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwfor*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwfor*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfor*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfor*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwfor*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfor*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwfor*/)( variable[1] /*n_kwfor*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwfor*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwfor*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwfor*/)( variable[1] /*n_kwfor*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_id(variable[5]) /*AForVardeclExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[5]) /*AForVardeclExpr::_n_expr*/ =  variable[3] /*n_expr*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_expr*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/, variable[5]) /*PNode::parent=*/;
   }
   return_label504: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AForVardeclExpr].i] = 1;
@@ -14554,10 +14558,10 @@ void parser_prod___AAssertExpr___n_kwassert__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[3]) /*AAssertExpr::_n_kwassert*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label505: while(false);
   tracehead = trace.prev;
@@ -14573,10 +14577,10 @@ void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_id(variable[3]) /*AAssertExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label506: while(false);
   tracehead = trace.prev;
@@ -14592,10 +14596,10 @@ void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_expr(variable[3]) /*AAssertExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label507: while(false);
   tracehead = trace.prev;
@@ -14610,16 +14614,16 @@ void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6055); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[4]) /*AAssertExpr::_n_kwassert*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6059); nit_exit(1);}
       variable[4] = variable[0];
@@ -14632,12 +14636,12 @@ void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssertExpr____n_id(variable[4]) /*AAssertExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6069); nit_exit(1);}
       variable[4] = variable[0];
@@ -14650,12 +14654,12 @@ void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[4]) /*AAssertExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 6079); nit_exit(1);}
       variable[4] = variable[0];
@@ -14680,27 +14684,27 @@ void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[3]) /*AAssertExpr::_n_kwassert*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[3]) /*AAssertExpr::_n_kwassert*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[3]) /*AAssertExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[3]) /*AAssertExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[3]) /*AAssertExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[3]) /*AAssertExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label509: while(false);
   tracehead = trace.prev;
@@ -14716,27 +14720,27 @@ void parser_prod___AAssertExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[3]) /*AAssertExpr::_n_kwassert*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[3]) /*AAssertExpr::_n_kwassert*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[3]) /*AAssertExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_id(variable[3]) /*AAssertExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[3]) /*AAssertExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssertExpr____n_expr(variable[3]) /*AAssertExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label510: while(false);
   tracehead = trace.prev;
@@ -14767,27 +14771,27 @@ void parser_prod___AAssertExpr___init_aassertexpr(val_t  self, val_t  param0, va
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AAssertExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AAssertExpr___empty_init))(variable[5], init_table /*YYY*/) /*AAssertExpr::empty_init*/;
+  CALL_parser_prod___AAssertExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AAssertExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[5]) /*AAssertExpr::_n_kwassert*/ =  variable[1] /*n_kwassert*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwassert*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwassert*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwassert*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwassert*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwassert*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwassert*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwassert*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwassert*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwassert*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwassert*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwassert*/)( variable[1] /*n_kwassert*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwassert*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwassert*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwassert*/)( variable[1] /*n_kwassert*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_id(variable[5]) /*AAssertExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAssertExpr____n_expr(variable[5]) /*AAssertExpr::_n_expr*/ =  variable[3] /*n_expr*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_expr*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_expr*/)( variable[3] /*n_expr*/, variable[5]) /*PNode::parent=*/;
   }
   return_label512: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAssertExpr].i] = 1;
@@ -14804,10 +14808,10 @@ void parser_prod___AOnceExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label513: while(false);
   tracehead = trace.prev;
@@ -14823,10 +14827,10 @@ void parser_prod___AOnceExpr___n_kwonce__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[3]) /*AOnceExpr::_n_kwonce*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label514: while(false);
   tracehead = trace.prev;
@@ -14841,16 +14845,16 @@ void parser_prod___AOnceExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6150); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[4]) /*AOnceExpr::_n_kwonce*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6154); nit_exit(1);}
       variable[4] = variable[0];
@@ -14863,12 +14867,12 @@ void parser_prod___AOnceExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 6164); nit_exit(1);}
       variable[4] = variable[0];
@@ -14893,19 +14897,19 @@ void parser_prod___AOnceExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[3]) /*AOnceExpr::_n_kwonce*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[3]) /*AOnceExpr::_n_kwonce*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label516: while(false);
   tracehead = trace.prev;
@@ -14921,19 +14925,19 @@ void parser_prod___AOnceExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[3]) /*AOnceExpr::_n_kwonce*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[3]) /*AOnceExpr::_n_kwonce*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label517: while(false);
   tracehead = trace.prev;
@@ -14963,20 +14967,20 @@ void parser_prod___AOnceExpr___init_aonceexpr(val_t  self, val_t  param0, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AOnceExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AOnceExpr___empty_init))(variable[4], init_table /*YYY*/) /*AOnceExpr::empty_init*/;
+  CALL_parser_prod___AOnceExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AOnceExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[4]) /*AOnceExpr::_n_kwonce*/ =  variable[1] /*n_kwonce*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwonce*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwonce*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwonce*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwonce*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwonce*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwonce*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwonce*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwonce*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwonce*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwonce*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwonce*/)( variable[1] /*n_kwonce*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwonce*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwonce*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwonce*/)( variable[1] /*n_kwonce*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label519: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOnceExpr].i] = 1;
@@ -14993,10 +14997,10 @@ void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label520: while(false);
   tracehead = trace.prev;
@@ -15011,16 +15015,16 @@ void parser_prod___ASendExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 6217); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 6221); nit_exit(1);}
       variable[4] = variable[0];
@@ -15045,11 +15049,11 @@ void parser_prod___ASendExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label522: while(false);
   tracehead = trace.prev;
@@ -15065,11 +15069,11 @@ void parser_prod___ASendExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label523: while(false);
   tracehead = trace.prev;
@@ -15098,13 +15102,13 @@ void parser_prod___ASendExpr___init_asendexpr(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ASendExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ASendExpr___empty_init))(variable[3], init_table /*YYY*/) /*ASendExpr::empty_init*/;
+  CALL_parser_prod___ASendExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ASendExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[3]) /*PNode::parent=*/;
   }
   return_label525: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
@@ -15121,10 +15125,10 @@ void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label526: while(false);
   tracehead = trace.prev;
@@ -15140,10 +15144,10 @@ void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label527: while(false);
   tracehead = trace.prev;
@@ -15158,16 +15162,16 @@ void parser_prod___ABinopExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6280); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6284); nit_exit(1);}
       variable[4] = variable[0];
@@ -15180,12 +15184,12 @@ void parser_prod___ABinopExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6294); nit_exit(1);}
       variable[4] = variable[0];
@@ -15210,19 +15214,19 @@ void parser_prod___ABinopExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label529: while(false);
   tracehead = trace.prev;
@@ -15238,19 +15242,19 @@ void parser_prod___ABinopExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label530: while(false);
   tracehead = trace.prev;
@@ -15280,20 +15284,20 @@ void parser_prod___ABinopExpr___init_abinopexpr(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ABinopExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ABinopExpr___empty_init))(variable[4], init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  CALL_parser_prod___ABinopExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ABinopExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label532: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
@@ -15310,10 +15314,10 @@ void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AOrExpr____n_expr(variable[3]) /*AOrExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label533: while(false);
   tracehead = trace.prev;
@@ -15329,10 +15333,10 @@ void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AOrExpr____n_expr2(variable[3]) /*AOrExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label534: while(false);
   tracehead = trace.prev;
@@ -15347,16 +15351,16 @@ void parser_prod___AOrExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6359); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AOrExpr____n_expr(variable[4]) /*AOrExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6363); nit_exit(1);}
       variable[4] = variable[0];
@@ -15369,12 +15373,12 @@ void parser_prod___AOrExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[4]) /*AOrExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6373); nit_exit(1);}
       variable[4] = variable[0];
@@ -15399,19 +15403,19 @@ void parser_prod___AOrExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[3]) /*AOrExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[3]) /*AOrExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[3]) /*AOrExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[3]) /*AOrExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label536: while(false);
   tracehead = trace.prev;
@@ -15427,19 +15431,19 @@ void parser_prod___AOrExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[3]) /*AOrExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOrExpr____n_expr(variable[3]) /*AOrExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[3]) /*AOrExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AOrExpr____n_expr2(variable[3]) /*AOrExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label537: while(false);
   tracehead = trace.prev;
@@ -15469,20 +15473,20 @@ void parser_prod___AOrExpr___init_aorexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AOrExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AOrExpr___empty_init))(variable[4], init_table /*YYY*/) /*AOrExpr::empty_init*/;
+  CALL_parser_prod___AOrExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AOrExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AOrExpr____n_expr(variable[4]) /*AOrExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AOrExpr____n_expr2(variable[4]) /*AOrExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label539: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
@@ -15499,10 +15503,10 @@ void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAndExpr____n_expr(variable[3]) /*AAndExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label540: while(false);
   tracehead = trace.prev;
@@ -15518,10 +15522,10 @@ void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAndExpr____n_expr2(variable[3]) /*AAndExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label541: while(false);
   tracehead = trace.prev;
@@ -15536,16 +15540,16 @@ void parser_prod___AAndExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6438); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAndExpr____n_expr(variable[4]) /*AAndExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6442); nit_exit(1);}
       variable[4] = variable[0];
@@ -15558,12 +15562,12 @@ void parser_prod___AAndExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[4]) /*AAndExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6452); nit_exit(1);}
       variable[4] = variable[0];
@@ -15588,19 +15592,19 @@ void parser_prod___AAndExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[3]) /*AAndExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[3]) /*AAndExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[3]) /*AAndExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[3]) /*AAndExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label543: while(false);
   tracehead = trace.prev;
@@ -15616,19 +15620,19 @@ void parser_prod___AAndExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[3]) /*AAndExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAndExpr____n_expr(variable[3]) /*AAndExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[3]) /*AAndExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAndExpr____n_expr2(variable[3]) /*AAndExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label544: while(false);
   tracehead = trace.prev;
@@ -15658,20 +15662,20 @@ void parser_prod___AAndExpr___init_aandexpr(val_t  self, val_t  param0, val_t  p
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AAndExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AAndExpr___empty_init))(variable[4], init_table /*YYY*/) /*AAndExpr::empty_init*/;
+  CALL_parser_prod___AAndExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AAndExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AAndExpr____n_expr(variable[4]) /*AAndExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AAndExpr____n_expr2(variable[4]) /*AAndExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label546: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
@@ -15688,10 +15692,10 @@ void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANotExpr____n_kwnot(variable[3]) /*ANotExpr::_n_kwnot*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label547: while(false);
   tracehead = trace.prev;
@@ -15707,10 +15711,10 @@ void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANotExpr____n_expr(variable[3]) /*ANotExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label548: while(false);
   tracehead = trace.prev;
@@ -15725,16 +15729,16 @@ void parser_prod___ANotExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6517); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[4]) /*ANotExpr::_n_kwnot*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6521); nit_exit(1);}
       variable[4] = variable[0];
@@ -15747,12 +15751,12 @@ void parser_prod___ANotExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANotExpr____n_expr(variable[4]) /*ANotExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6531); nit_exit(1);}
       variable[4] = variable[0];
@@ -15777,19 +15781,19 @@ void parser_prod___ANotExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[3]) /*ANotExpr::_n_kwnot*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[3]) /*ANotExpr::_n_kwnot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[3]) /*ANotExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[3]) /*ANotExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label550: while(false);
   tracehead = trace.prev;
@@ -15805,19 +15809,19 @@ void parser_prod___ANotExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[3]) /*ANotExpr::_n_kwnot*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANotExpr____n_kwnot(variable[3]) /*ANotExpr::_n_kwnot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[3]) /*ANotExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANotExpr____n_expr(variable[3]) /*ANotExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label551: while(false);
   tracehead = trace.prev;
@@ -15847,20 +15851,20 @@ void parser_prod___ANotExpr___init_anotexpr(val_t  self, val_t  param0, val_t  p
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ANotExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ANotExpr___empty_init))(variable[4], init_table /*YYY*/) /*ANotExpr::empty_init*/;
+  CALL_parser_prod___ANotExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ANotExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ANotExpr____n_kwnot(variable[4]) /*ANotExpr::_n_kwnot*/ =  variable[1] /*n_kwnot*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnot*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnot*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnot*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnot*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnot*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwnot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnot*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnot*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnot*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnot*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnot*/)( variable[1] /*n_kwnot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwnot*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwnot*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnot*/)( variable[1] /*n_kwnot*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ANotExpr____n_expr(variable[4]) /*ANotExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label553: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
@@ -15877,10 +15881,10 @@ void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label554: while(false);
   tracehead = trace.prev;
@@ -15896,10 +15900,10 @@ void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label555: while(false);
   tracehead = trace.prev;
@@ -15914,16 +15918,16 @@ void parser_prod___AEqExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6596); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6600); nit_exit(1);}
       variable[4] = variable[0];
@@ -15936,12 +15940,12 @@ void parser_prod___AEqExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6610); nit_exit(1);}
       variable[4] = variable[0];
@@ -15966,19 +15970,19 @@ void parser_prod___AEqExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label557: while(false);
   tracehead = trace.prev;
@@ -15994,19 +15998,19 @@ void parser_prod___AEqExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label558: while(false);
   tracehead = trace.prev;
@@ -16036,20 +16040,20 @@ void parser_prod___AEqExpr___init_aeqexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AEqExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AEqExpr___empty_init))(variable[4], init_table /*YYY*/) /*AEqExpr::empty_init*/;
+  CALL_parser_prod___AEqExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AEqExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label560: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
@@ -16066,10 +16070,10 @@ void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEeExpr____n_expr(variable[3]) /*AEeExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label561: while(false);
   tracehead = trace.prev;
@@ -16085,10 +16089,10 @@ void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEeExpr____n_expr2(variable[3]) /*AEeExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label562: while(false);
   tracehead = trace.prev;
@@ -16103,16 +16107,16 @@ void parser_prod___AEeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6675); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AEeExpr____n_expr(variable[4]) /*AEeExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6679); nit_exit(1);}
       variable[4] = variable[0];
@@ -16125,12 +16129,12 @@ void parser_prod___AEeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[4]) /*AEeExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6689); nit_exit(1);}
       variable[4] = variable[0];
@@ -16155,19 +16159,19 @@ void parser_prod___AEeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[3]) /*AEeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[3]) /*AEeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[3]) /*AEeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[3]) /*AEeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label564: while(false);
   tracehead = trace.prev;
@@ -16183,19 +16187,19 @@ void parser_prod___AEeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[3]) /*AEeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEeExpr____n_expr(variable[3]) /*AEeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[3]) /*AEeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEeExpr____n_expr2(variable[3]) /*AEeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label565: while(false);
   tracehead = trace.prev;
@@ -16225,20 +16229,20 @@ void parser_prod___AEeExpr___init_aeeexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AEeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AEeExpr___empty_init))(variable[4], init_table /*YYY*/) /*AEeExpr::empty_init*/;
+  CALL_parser_prod___AEeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AEeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AEeExpr____n_expr(variable[4]) /*AEeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AEeExpr____n_expr2(variable[4]) /*AEeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label567: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
@@ -16255,10 +16259,10 @@ void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label568: while(false);
   tracehead = trace.prev;
@@ -16274,10 +16278,10 @@ void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label569: while(false);
   tracehead = trace.prev;
@@ -16292,16 +16296,16 @@ void parser_prod___ANeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6754); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6758); nit_exit(1);}
       variable[4] = variable[0];
@@ -16314,12 +16318,12 @@ void parser_prod___ANeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6768); nit_exit(1);}
       variable[4] = variable[0];
@@ -16344,19 +16348,19 @@ void parser_prod___ANeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label571: while(false);
   tracehead = trace.prev;
@@ -16372,19 +16376,19 @@ void parser_prod___ANeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label572: while(false);
   tracehead = trace.prev;
@@ -16414,20 +16418,20 @@ void parser_prod___ANeExpr___init_aneexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ANeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ANeExpr___empty_init))(variable[4], init_table /*YYY*/) /*ANeExpr::empty_init*/;
+  CALL_parser_prod___ANeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ANeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label574: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
@@ -16444,10 +16448,10 @@ void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label575: while(false);
   tracehead = trace.prev;
@@ -16463,10 +16467,10 @@ void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label576: while(false);
   tracehead = trace.prev;
@@ -16481,16 +16485,16 @@ void parser_prod___ALtExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6833); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6837); nit_exit(1);}
       variable[4] = variable[0];
@@ -16503,12 +16507,12 @@ void parser_prod___ALtExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6847); nit_exit(1);}
       variable[4] = variable[0];
@@ -16533,19 +16537,19 @@ void parser_prod___ALtExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label578: while(false);
   tracehead = trace.prev;
@@ -16561,19 +16565,19 @@ void parser_prod___ALtExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label579: while(false);
   tracehead = trace.prev;
@@ -16603,20 +16607,20 @@ void parser_prod___ALtExpr___init_altexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ALtExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ALtExpr___empty_init))(variable[4], init_table /*YYY*/) /*ALtExpr::empty_init*/;
+  CALL_parser_prod___ALtExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ALtExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label581: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
@@ -16633,10 +16637,10 @@ void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label582: while(false);
   tracehead = trace.prev;
@@ -16652,10 +16656,10 @@ void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label583: while(false);
   tracehead = trace.prev;
@@ -16670,16 +16674,16 @@ void parser_prod___ALeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6912); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6916); nit_exit(1);}
       variable[4] = variable[0];
@@ -16692,12 +16696,12 @@ void parser_prod___ALeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6926); nit_exit(1);}
       variable[4] = variable[0];
@@ -16722,19 +16726,19 @@ void parser_prod___ALeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label585: while(false);
   tracehead = trace.prev;
@@ -16750,19 +16754,19 @@ void parser_prod___ALeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label586: while(false);
   tracehead = trace.prev;
@@ -16792,20 +16796,20 @@ void parser_prod___ALeExpr___init_aleexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ALeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ALeExpr___empty_init))(variable[4], init_table /*YYY*/) /*ALeExpr::empty_init*/;
+  CALL_parser_prod___ALeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ALeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label588: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
@@ -16822,10 +16826,10 @@ void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label589: while(false);
   tracehead = trace.prev;
@@ -16841,10 +16845,10 @@ void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label590: while(false);
   tracehead = trace.prev;
@@ -16859,16 +16863,16 @@ void parser_prod___AGtExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6991); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6995); nit_exit(1);}
       variable[4] = variable[0];
@@ -16881,12 +16885,12 @@ void parser_prod___AGtExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 7005); nit_exit(1);}
       variable[4] = variable[0];
@@ -16911,19 +16915,19 @@ void parser_prod___AGtExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label592: while(false);
   tracehead = trace.prev;
@@ -16939,19 +16943,19 @@ void parser_prod___AGtExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label593: while(false);
   tracehead = trace.prev;
@@ -16981,20 +16985,20 @@ void parser_prod___AGtExpr___init_agtexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AGtExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AGtExpr___empty_init))(variable[4], init_table /*YYY*/) /*AGtExpr::empty_init*/;
+  CALL_parser_prod___AGtExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AGtExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label595: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
@@ -17011,10 +17015,10 @@ void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label596: while(false);
   tracehead = trace.prev;
@@ -17030,10 +17034,10 @@ void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label597: while(false);
   tracehead = trace.prev;
@@ -17048,16 +17052,16 @@ void parser_prod___AGeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7070); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7074); nit_exit(1);}
       variable[4] = variable[0];
@@ -17070,12 +17074,12 @@ void parser_prod___AGeExpr___replace_child(val_t  self, val_t  param0, val_t  pa
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 7084); nit_exit(1);}
       variable[4] = variable[0];
@@ -17100,19 +17104,19 @@ void parser_prod___AGeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label599: while(false);
   tracehead = trace.prev;
@@ -17128,19 +17132,19 @@ void parser_prod___AGeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label600: while(false);
   tracehead = trace.prev;
@@ -17170,20 +17174,20 @@ void parser_prod___AGeExpr___init_ageexpr(val_t  self, val_t  param0, val_t  par
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AGeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AGeExpr___empty_init))(variable[4], init_table /*YYY*/) /*AGeExpr::empty_init*/;
+  CALL_parser_prod___AGeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AGeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label602: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
@@ -17200,10 +17204,10 @@ void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIsaExpr____n_expr(variable[3]) /*AIsaExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label603: while(false);
   tracehead = trace.prev;
@@ -17219,10 +17223,10 @@ void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIsaExpr____n_type(variable[3]) /*AIsaExpr::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label604: while(false);
   tracehead = trace.prev;
@@ -17237,16 +17241,16 @@ void parser_prod___AIsaExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7149); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[4]) /*AIsaExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7153); nit_exit(1);}
       variable[4] = variable[0];
@@ -17259,12 +17263,12 @@ void parser_prod___AIsaExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIsaExpr____n_type(variable[4]) /*AIsaExpr::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 7163); nit_exit(1);}
       variable[4] = variable[0];
@@ -17289,19 +17293,19 @@ void parser_prod___AIsaExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[3]) /*AIsaExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[3]) /*AIsaExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[3]) /*AIsaExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[3]) /*AIsaExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label606: while(false);
   tracehead = trace.prev;
@@ -17317,19 +17321,19 @@ void parser_prod___AIsaExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[3]) /*AIsaExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIsaExpr____n_expr(variable[3]) /*AIsaExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[3]) /*AIsaExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIsaExpr____n_type(variable[3]) /*AIsaExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label607: while(false);
   tracehead = trace.prev;
@@ -17359,20 +17363,20 @@ void parser_prod___AIsaExpr___init_aisaexpr(val_t  self, val_t  param0, val_t  p
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AIsaExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AIsaExpr___empty_init))(variable[4], init_table /*YYY*/) /*AIsaExpr::empty_init*/;
+  CALL_parser_prod___AIsaExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AIsaExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AIsaExpr____n_expr(variable[4]) /*AIsaExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AIsaExpr____n_type(variable[4]) /*AIsaExpr::_n_type*/ =  variable[2] /*n_type*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[4]) /*PNode::parent=*/;
   }
   return_label609: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
@@ -17389,10 +17393,10 @@ void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label610: while(false);
   tracehead = trace.prev;
@@ -17408,10 +17412,10 @@ void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label611: while(false);
   tracehead = trace.prev;
@@ -17426,16 +17430,16 @@ void parser_prod___APlusExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7228); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7232); nit_exit(1);}
       variable[4] = variable[0];
@@ -17448,12 +17452,12 @@ void parser_prod___APlusExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 7242); nit_exit(1);}
       variable[4] = variable[0];
@@ -17478,19 +17482,19 @@ void parser_prod___APlusExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label613: while(false);
   tracehead = trace.prev;
@@ -17506,19 +17510,19 @@ void parser_prod___APlusExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label614: while(false);
   tracehead = trace.prev;
@@ -17548,20 +17552,20 @@ void parser_prod___APlusExpr___init_aplusexpr(val_t  self, val_t  param0, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___APlusExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___APlusExpr___empty_init))(variable[4], init_table /*YYY*/) /*APlusExpr::empty_init*/;
+  CALL_parser_prod___APlusExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*APlusExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label616: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
@@ -17578,10 +17582,10 @@ void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label617: while(false);
   tracehead = trace.prev;
@@ -17597,10 +17601,10 @@ void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label618: while(false);
   tracehead = trace.prev;
@@ -17615,16 +17619,16 @@ void parser_prod___AMinusExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7307); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7311); nit_exit(1);}
       variable[4] = variable[0];
@@ -17637,12 +17641,12 @@ void parser_prod___AMinusExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7321); nit_exit(1);}
       variable[4] = variable[0];
@@ -17667,19 +17671,19 @@ void parser_prod___AMinusExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label620: while(false);
   tracehead = trace.prev;
@@ -17695,19 +17699,19 @@ void parser_prod___AMinusExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label621: while(false);
   tracehead = trace.prev;
@@ -17737,20 +17741,20 @@ void parser_prod___AMinusExpr___init_aminusexpr(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AMinusExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AMinusExpr___empty_init))(variable[4], init_table /*YYY*/) /*AMinusExpr::empty_init*/;
+  CALL_parser_prod___AMinusExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AMinusExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label623: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
@@ -17767,10 +17771,10 @@ void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label624: while(false);
   tracehead = trace.prev;
@@ -17786,10 +17790,10 @@ void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label625: while(false);
   tracehead = trace.prev;
@@ -17804,16 +17808,16 @@ void parser_prod___AStarshipExpr___replace_child(val_t  self, val_t  param0, val
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7386); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7390); nit_exit(1);}
       variable[4] = variable[0];
@@ -17826,12 +17830,12 @@ void parser_prod___AStarshipExpr___replace_child(val_t  self, val_t  param0, val
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7400); nit_exit(1);}
       variable[4] = variable[0];
@@ -17856,19 +17860,19 @@ void parser_prod___AStarshipExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label627: while(false);
   tracehead = trace.prev;
@@ -17884,19 +17888,19 @@ void parser_prod___AStarshipExpr___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label628: while(false);
   tracehead = trace.prev;
@@ -17926,20 +17930,20 @@ void parser_prod___AStarshipExpr___init_astarshipexpr(val_t  self, val_t  param0
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AStarshipExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AStarshipExpr___empty_init))(variable[4], init_table /*YYY*/) /*AStarshipExpr::empty_init*/;
+  CALL_parser_prod___AStarshipExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AStarshipExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label630: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
@@ -17956,10 +17960,10 @@ void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label631: while(false);
   tracehead = trace.prev;
@@ -17975,10 +17979,10 @@ void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label632: while(false);
   tracehead = trace.prev;
@@ -17993,16 +17997,16 @@ void parser_prod___AStarExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7465); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7469); nit_exit(1);}
       variable[4] = variable[0];
@@ -18015,12 +18019,12 @@ void parser_prod___AStarExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7479); nit_exit(1);}
       variable[4] = variable[0];
@@ -18045,19 +18049,19 @@ void parser_prod___AStarExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label634: while(false);
   tracehead = trace.prev;
@@ -18073,19 +18077,19 @@ void parser_prod___AStarExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label635: while(false);
   tracehead = trace.prev;
@@ -18115,20 +18119,20 @@ void parser_prod___AStarExpr___init_astarexpr(val_t  self, val_t  param0, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AStarExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AStarExpr___empty_init))(variable[4], init_table /*YYY*/) /*AStarExpr::empty_init*/;
+  CALL_parser_prod___AStarExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AStarExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label637: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
@@ -18145,10 +18149,10 @@ void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label638: while(false);
   tracehead = trace.prev;
@@ -18164,10 +18168,10 @@ void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label639: while(false);
   tracehead = trace.prev;
@@ -18182,16 +18186,16 @@ void parser_prod___ASlashExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7544); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7548); nit_exit(1);}
       variable[4] = variable[0];
@@ -18204,12 +18208,12 @@ void parser_prod___ASlashExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7558); nit_exit(1);}
       variable[4] = variable[0];
@@ -18234,19 +18238,19 @@ void parser_prod___ASlashExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label641: while(false);
   tracehead = trace.prev;
@@ -18262,19 +18266,19 @@ void parser_prod___ASlashExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label642: while(false);
   tracehead = trace.prev;
@@ -18304,20 +18308,20 @@ void parser_prod___ASlashExpr___init_aslashexpr(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ASlashExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ASlashExpr___empty_init))(variable[4], init_table /*YYY*/) /*ASlashExpr::empty_init*/;
+  CALL_parser_prod___ASlashExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ASlashExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label644: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
@@ -18334,10 +18338,10 @@ void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label645: while(false);
   tracehead = trace.prev;
@@ -18353,10 +18357,10 @@ void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label646: while(false);
   tracehead = trace.prev;
@@ -18371,16 +18375,16 @@ void parser_prod___APercentExpr___replace_child(val_t  self, val_t  param0, val_
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7623); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7627); nit_exit(1);}
       variable[4] = variable[0];
@@ -18393,12 +18397,12 @@ void parser_prod___APercentExpr___replace_child(val_t  self, val_t  param0, val_
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7637); nit_exit(1);}
       variable[4] = variable[0];
@@ -18423,19 +18427,19 @@ void parser_prod___APercentExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label648: while(false);
   tracehead = trace.prev;
@@ -18451,19 +18455,19 @@ void parser_prod___APercentExpr___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ABinopExpr____n_expr2(variable[3]) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label649: while(false);
   tracehead = trace.prev;
@@ -18493,20 +18497,20 @@ void parser_prod___APercentExpr___init_apercentexpr(val_t  self, val_t  param0,
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___APercentExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___APercentExpr___empty_init))(variable[4], init_table /*YYY*/) /*APercentExpr::empty_init*/;
+  CALL_parser_prod___APercentExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*APercentExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label651: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
@@ -18523,10 +18527,10 @@ void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label652: while(false);
   tracehead = trace.prev;
@@ -18542,10 +18546,10 @@ void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AUminusExpr____n_minus(variable[3]) /*AUminusExpr::_n_minus*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label653: while(false);
   tracehead = trace.prev;
@@ -18560,16 +18564,16 @@ void parser_prod___AUminusExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7702); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[4]) /*AUminusExpr::_n_minus*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7706); nit_exit(1);}
       variable[4] = variable[0];
@@ -18582,12 +18586,12 @@ void parser_prod___AUminusExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7716); nit_exit(1);}
       variable[4] = variable[0];
@@ -18612,19 +18616,19 @@ void parser_prod___AUminusExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[3]) /*AUminusExpr::_n_minus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[3]) /*AUminusExpr::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label655: while(false);
   tracehead = trace.prev;
@@ -18640,19 +18644,19 @@ void parser_prod___AUminusExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[3]) /*AUminusExpr::_n_minus*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AUminusExpr____n_minus(variable[3]) /*AUminusExpr::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label656: while(false);
   tracehead = trace.prev;
@@ -18682,20 +18686,20 @@ void parser_prod___AUminusExpr___init_auminusexpr(val_t  self, val_t  param0, va
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AUminusExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AUminusExpr___empty_init))(variable[4], init_table /*YYY*/) /*AUminusExpr::empty_init*/;
+  CALL_parser_prod___AUminusExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AUminusExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AUminusExpr____n_minus(variable[4]) /*AUminusExpr::_n_minus*/ =  variable[1] /*n_minus*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minus*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minus*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_minus*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_minus*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minus*/)( variable[1] /*n_minus*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr*/)( variable[2] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   return_label658: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
@@ -18712,10 +18716,10 @@ void parser_prod___ANewExpr___n_kwnew__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_kwnew(variable[3]) /*ANewExpr::_n_kwnew*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label659: while(false);
   tracehead = trace.prev;
@@ -18731,10 +18735,10 @@ void parser_prod___ANewExpr___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_type(variable[3]) /*ANewExpr::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label660: while(false);
   tracehead = trace.prev;
@@ -18750,10 +18754,10 @@ void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_id(variable[3]) /*ANewExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label661: while(false);
   tracehead = trace.prev;
@@ -18768,16 +18772,16 @@ void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7800); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[4]) /*ANewExpr::_n_kwnew*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7804); nit_exit(1);}
       variable[4] = variable[0];
@@ -18790,12 +18794,12 @@ void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANewExpr____n_type(variable[4]) /*ANewExpr::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7814); nit_exit(1);}
       variable[4] = variable[0];
@@ -18808,12 +18812,12 @@ void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANewExpr____n_id(variable[4]) /*ANewExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7824); nit_exit(1);}
       variable[4] = variable[0];
@@ -18826,38 +18830,38 @@ void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[4]) /*ANewExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[7]) /*ANewExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7834); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[7]) /*ANewExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ANewExpr____n_args(variable[7]) /*ANewExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label662;
     }
     continue_663: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_663: while(0);
   return_label662: while(false);
@@ -18874,39 +18878,39 @@ void parser_prod___ANewExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[3]) /*ANewExpr::_n_kwnew*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[3]) /*ANewExpr::_n_kwnew*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[3]) /*ANewExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[3]) /*ANewExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[3]) /*ANewExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[3]) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_args(variable[3]) /*ANewExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_665: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_665: while(0);
   return_label664: while(false);
@@ -18923,39 +18927,39 @@ void parser_prod___ANewExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[3]) /*ANewExpr::_n_kwnew*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_kwnew(variable[3]) /*ANewExpr::_n_kwnew*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[3]) /*ANewExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_type(variable[3]) /*ANewExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[3]) /*ANewExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANewExpr____n_id(variable[3]) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[4]) /*ANewExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ANewExpr____n_args(variable[4]) /*ANewExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_667: while(0);
@@ -18991,46 +18995,46 @@ void parser_prod___ANewExpr___init_anewexpr(val_t  self, val_t  param0, val_t  p
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANewExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___ANewExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___ANewExpr___empty_init))(variable[6], init_table /*YYY*/) /*ANewExpr::empty_init*/;
+  CALL_parser_prod___ANewExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*ANewExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_kwnew(variable[6]) /*ANewExpr::_n_kwnew*/ =  variable[1] /*n_kwnew*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnew*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnew*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnew*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnew*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnew*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwnew*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnew*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnew*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnew*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnew*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnew*/)( variable[1] /*n_kwnew*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwnew*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwnew*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnew*/)( variable[1] /*n_kwnew*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_type(variable[6]) /*ANewExpr::_n_type*/ =  variable[2] /*n_type*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_type*/)( variable[2] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_type*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_type*/)( variable[2] /*n_type*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___ANewExpr____n_id(variable[6]) /*ANewExpr::_n_id*/ =  variable[3] /*n_id*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_id*/)( variable[3] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_id*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_id*/)( variable[3] /*n_id*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ANewExpr____n_args(variable[6]) /*ANewExpr::_n_args*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[4] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[4] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*n_args*/)( variable[4] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, 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_prod___ANewExpr___init_anewexpr, LOCATE_parser_prod, 7792); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___ANewExpr____n_args(variable[9]) /*ANewExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_670: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_670: while(0);
   return_label669: while(false);
@@ -19048,10 +19052,10 @@ void parser_prod___AAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label671: while(false);
   tracehead = trace.prev;
@@ -19067,10 +19071,10 @@ void parser_prod___AAttrExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label672: while(false);
   tracehead = trace.prev;
@@ -19085,16 +19089,16 @@ void parser_prod___AAttrExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7917); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7921); nit_exit(1);}
       variable[4] = variable[0];
@@ -19107,12 +19111,12 @@ void parser_prod___AAttrExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7931); nit_exit(1);}
       variable[4] = variable[0];
@@ -19137,19 +19141,19 @@ void parser_prod___AAttrExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label674: while(false);
   tracehead = trace.prev;
@@ -19165,19 +19169,19 @@ void parser_prod___AAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label675: while(false);
   tracehead = trace.prev;
@@ -19207,20 +19211,20 @@ void parser_prod___AAttrExpr___init_aattrexpr(val_t  self, val_t  param0, val_t
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AAttrExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AAttrExpr___empty_init))(variable[4], init_table /*YYY*/) /*AAttrExpr::empty_init*/;
+  CALL_parser_prod___AAttrExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AAttrExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[4]) /*PNode::parent=*/;
   }
   return_label677: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
@@ -19237,10 +19241,10 @@ void parser_prod___AAttrAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label678: while(false);
   tracehead = trace.prev;
@@ -19256,10 +19260,10 @@ void parser_prod___AAttrAssignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label679: while(false);
   tracehead = trace.prev;
@@ -19275,10 +19279,10 @@ void parser_prod___AAttrAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label680: while(false);
   tracehead = trace.prev;
@@ -19294,10 +19298,10 @@ void parser_prod___AAttrAssignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label681: while(false);
   tracehead = trace.prev;
@@ -19312,16 +19316,16 @@ void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, v
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8020); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8024); nit_exit(1);}
       variable[4] = variable[0];
@@ -19334,12 +19338,12 @@ void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8034); nit_exit(1);}
       variable[4] = variable[0];
@@ -19352,12 +19356,12 @@ void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8044); nit_exit(1);}
       variable[4] = variable[0];
@@ -19370,12 +19374,12 @@ void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 8054); nit_exit(1);}
       variable[4] = variable[0];
@@ -19400,35 +19404,35 @@ void parser_prod___AAttrAssignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label683: while(false);
   tracehead = trace.prev;
@@ -19444,35 +19448,35 @@ void parser_prod___AAttrAssignExpr___visit_all_reverse(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label684: while(false);
   tracehead = trace.prev;
@@ -19504,34 +19508,34 @@ void parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t  self, val_t  pa
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___AAttrAssignExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___AAttrAssignExpr___empty_init))(variable[6], init_table /*YYY*/) /*AAttrAssignExpr::empty_init*/;
+  CALL_parser_prod___AAttrAssignExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*AAttrAssignExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[6]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[6]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[6]) /*AAssignFormExpr::_n_assign*/ =  variable[3] /*n_assign*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_assign*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[6]) /*AAssignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
   }
   return_label686: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
@@ -19548,10 +19552,10 @@ void parser_prod___AAttrReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label687: while(false);
   tracehead = trace.prev;
@@ -19567,10 +19571,10 @@ void parser_prod___AAttrReassignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label688: while(false);
   tracehead = trace.prev;
@@ -19586,10 +19590,10 @@ void parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label689: while(false);
   tracehead = trace.prev;
@@ -19605,10 +19609,10 @@ void parser_prod___AAttrReassignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label690: while(false);
   tracehead = trace.prev;
@@ -19623,16 +19627,16 @@ void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8155); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8159); nit_exit(1);}
       variable[4] = variable[0];
@@ -19645,12 +19649,12 @@ void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8169); nit_exit(1);}
       variable[4] = variable[0];
@@ -19663,12 +19667,12 @@ void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8179); nit_exit(1);}
       variable[4] = variable[0];
@@ -19681,12 +19685,12 @@ void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 8189); nit_exit(1);}
       variable[4] = variable[0];
@@ -19711,35 +19715,35 @@ void parser_prod___AAttrReassignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label692: while(false);
   tracehead = trace.prev;
@@ -19755,35 +19759,35 @@ void parser_prod___AAttrReassignExpr___visit_all_reverse(val_t  self, val_t  par
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[3]) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAttrFormExpr____n_id(variable[3]) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label693: while(false);
   tracehead = trace.prev;
@@ -19815,34 +19819,34 @@ void parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t  self, val_t
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___AAttrReassignExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___AAttrReassignExpr___empty_init))(variable[6], init_table /*YYY*/) /*AAttrReassignExpr::empty_init*/;
+  CALL_parser_prod___AAttrReassignExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*AAttrReassignExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[6]) /*AAttrFormExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AAttrFormExpr____n_id(variable[6]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[6]) /*AReassignFormExpr::_n_assign_op*/ =  variable[3] /*n_assign_op*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_assign_op*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[6]) /*AReassignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
   }
   return_label695: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
@@ -19859,10 +19863,10 @@ void parser_prod___ACallExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label696: while(false);
   tracehead = trace.prev;
@@ -19878,10 +19882,10 @@ void parser_prod___ACallExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label697: while(false);
   tracehead = trace.prev;
@@ -19896,16 +19900,16 @@ void parser_prod___ACallExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8280); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8284); nit_exit(1);}
       variable[4] = variable[0];
@@ -19918,12 +19922,12 @@ void parser_prod___ACallExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8294); nit_exit(1);}
       variable[4] = variable[0];
@@ -19936,74 +19940,74 @@ void parser_prod___ACallExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8304); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label698;
     }
     continue_699: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_699: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8316); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label698;
     }
     continue_700: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_700: while(0);
   return_label698: while(false);
@@ -20020,44 +20024,44 @@ void parser_prod___ACallExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[3]) /*ACallFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_702: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_702: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[3]) /*ASendExpr::_n_closure_defs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_703: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_703: while(0);
   return_label701: while(false);
@@ -20074,31 +20078,31 @@ void parser_prod___ACallExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_705: while(0);
@@ -20106,15 +20110,15 @@ void parser_prod___ACallExpr___visit_all_reverse(val_t  self, val_t  param0) {
   break_705: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_706: while(0);
@@ -20150,59 +20154,59 @@ void parser_prod___ACallExpr___init_acallexpr(val_t  self, val_t  param0, val_t
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___ACallExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___ACallExpr___empty_init))(variable[6], init_table /*YYY*/) /*ACallExpr::empty_init*/;
+  CALL_parser_prod___ACallExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*ACallExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[6]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[6]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ACallFormExpr____n_args(variable[6]) /*ACallFormExpr::_n_args*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, 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_prod___ACallExpr___init_acallexpr, LOCATE_parser_prod, 8266); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[9]) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_709: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_709: while(0);
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[PClosureDef]*/
   ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[6]) /*ASendExpr::_n_closure_defs*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[4] /*n_closure_defs*/,COLOR_abstract_collection___Collection___iterator))( variable[4] /*n_closure_defs*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*n_closure_defs*/)( variable[4] /*n_closure_defs*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
     if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___init_acallexpr, LOCATE_parser_prod, 8272); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[9]) /*ASendExpr::_n_closure_defs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_710: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_710: while(0);
   return_label708: while(false);
@@ -20220,10 +20224,10 @@ void parser_prod___ACallAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label711: while(false);
   tracehead = trace.prev;
@@ -20239,10 +20243,10 @@ void parser_prod___ACallAssignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label712: while(false);
   tracehead = trace.prev;
@@ -20258,10 +20262,10 @@ void parser_prod___ACallAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label713: while(false);
   tracehead = trace.prev;
@@ -20277,10 +20281,10 @@ void parser_prod___ACallAssignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label714: while(false);
   tracehead = trace.prev;
@@ -20295,16 +20299,16 @@ void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, v
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8434); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8438); nit_exit(1);}
       variable[4] = variable[0];
@@ -20317,12 +20321,12 @@ void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8448); nit_exit(1);}
       variable[4] = variable[0];
@@ -20335,48 +20339,48 @@ void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8458); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label715;
     }
     continue_716: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_716: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8470); nit_exit(1);}
       variable[4] = variable[0];
@@ -20389,12 +20393,12 @@ void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, v
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8480); nit_exit(1);}
       variable[4] = variable[0];
@@ -20419,48 +20423,48 @@ void parser_prod___ACallAssignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[3]) /*ACallFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_718: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_718: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label717: while(false);
   tracehead = trace.prev;
@@ -20476,31 +20480,31 @@ void parser_prod___ACallAssignExpr___visit_all_reverse(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_720: while(0);
@@ -20508,19 +20512,19 @@ void parser_prod___ACallAssignExpr___visit_all_reverse(val_t  self, val_t  param
   break_720: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label719: while(false);
   tracehead = trace.prev;
@@ -20553,54 +20557,54 @@ void parser_prod___ACallAssignExpr___init_acallassignexpr(val_t  self, val_t  pa
   variable[5] =  param4;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
   variable[7] = variable[0];
-  ((parser_prod___ACallAssignExpr___empty_init_t)CALL(variable[7],COLOR_parser_prod___ACallAssignExpr___empty_init))(variable[7], init_table /*YYY*/) /*ACallAssignExpr::empty_init*/;
+  CALL_parser_prod___ACallAssignExpr___empty_init(variable[7])(variable[7], init_table /*YYY*/) /*ACallAssignExpr::empty_init*/;
   variable[7] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[7]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[7]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   variable[8] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/ = variable[8];
-  variable[7] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[7] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[8] = ((array___ArrayIterator___is_ok_t)CALL(variable[7],COLOR_abstract_collection___Iterator___is_ok))(variable[7]) /*ArrayIterator::is_ok*/;
+    variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[8])) break; /*for*/
-    variable[8] = ((array___ArrayIterator___item_t)CALL(variable[7],COLOR_abstract_collection___Iterator___item))(variable[7]) /*ArrayIterator::item*/;
+    variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/;
     variable[9] = variable[8];
     variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, 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_prod___ACallAssignExpr___init_acallassignexpr, LOCATE_parser_prod, 8418); nit_exit(1);}
     variable[10] = variable[0];
     variable[10] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[10]) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[10],COLOR_abstract_collection___SimpleCollection___add))(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[9] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[9] /*n*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n*/)( variable[9] /*n*/, variable[10]) /*PNode::parent=*/;
     continue_723: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[7],COLOR_abstract_collection___Iterator___next))(variable[7]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
   }
   break_723: while(0);
   variable[7] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[7]) /*AAssignFormExpr::_n_assign*/ =  variable[4] /*n_assign*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_assign*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign*/)( variable[4] /*n_assign*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[7]) /*AAssignFormExpr::_n_value*/ =  variable[5] /*n_value*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_value*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_value*/)( variable[5] /*n_value*/, variable[7]) /*PNode::parent=*/;
   }
   return_label722: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
@@ -20617,10 +20621,10 @@ void parser_prod___ACallReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label724: while(false);
   tracehead = trace.prev;
@@ -20636,10 +20640,10 @@ void parser_prod___ACallReassignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label725: while(false);
   tracehead = trace.prev;
@@ -20655,10 +20659,10 @@ void parser_prod___ACallReassignExpr___n_assign_op__eq(val_t  self, val_t  param
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label726: while(false);
   tracehead = trace.prev;
@@ -20674,10 +20678,10 @@ void parser_prod___ACallReassignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label727: while(false);
   tracehead = trace.prev;
@@ -20692,16 +20696,16 @@ void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8598); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8602); nit_exit(1);}
       variable[4] = variable[0];
@@ -20714,12 +20718,12 @@ void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8612); nit_exit(1);}
       variable[4] = variable[0];
@@ -20732,48 +20736,48 @@ void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8622); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label728;
     }
     continue_729: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_729: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8634); nit_exit(1);}
       variable[4] = variable[0];
@@ -20786,12 +20790,12 @@ void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8644); nit_exit(1);}
       variable[4] = variable[0];
@@ -20816,48 +20820,48 @@ void parser_prod___ACallReassignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[3]) /*ACallFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_731: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_731: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label730: while(false);
   tracehead = trace.prev;
@@ -20873,31 +20877,31 @@ void parser_prod___ACallReassignExpr___visit_all_reverse(val_t  self, val_t  par
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACallFormExpr____n_id(variable[3]) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[4]) /*ACallFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_733: while(0);
@@ -20905,19 +20909,19 @@ void parser_prod___ACallReassignExpr___visit_all_reverse(val_t  self, val_t  par
   break_733: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label732: while(false);
   tracehead = trace.prev;
@@ -20950,54 +20954,54 @@ void parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t  self, val_t
   variable[5] =  param4;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
   variable[7] = variable[0];
-  ((parser_prod___ACallReassignExpr___empty_init_t)CALL(variable[7],COLOR_parser_prod___ACallReassignExpr___empty_init))(variable[7], init_table /*YYY*/) /*ACallReassignExpr::empty_init*/;
+  CALL_parser_prod___ACallReassignExpr___empty_init(variable[7])(variable[7], init_table /*YYY*/) /*ACallReassignExpr::empty_init*/;
   variable[7] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[7]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___ACallFormExpr____n_id(variable[7]) /*ACallFormExpr::_n_id*/ =  variable[2] /*n_id*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_id*/)( variable[2] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_id*/)( variable[2] /*n_id*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   variable[8] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ACallFormExpr____n_args(variable[7]) /*ACallFormExpr::_n_args*/ = variable[8];
-  variable[7] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[7] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[8] = ((array___ArrayIterator___is_ok_t)CALL(variable[7],COLOR_abstract_collection___Iterator___is_ok))(variable[7]) /*ArrayIterator::is_ok*/;
+    variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[8])) break; /*for*/
-    variable[8] = ((array___ArrayIterator___item_t)CALL(variable[7],COLOR_abstract_collection___Iterator___item))(variable[7]) /*ArrayIterator::item*/;
+    variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/;
     variable[9] = variable[8];
     variable[10] = TAG_Bool(( variable[9] /*n*/==NIT_NULL) || VAL_ISA( variable[9] /*n*/, 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_prod___ACallReassignExpr___init_acallreassignexpr, LOCATE_parser_prod, 8582); nit_exit(1);}
     variable[10] = variable[0];
     variable[10] = ATTR_parser_nodes___ACallFormExpr____n_args(variable[10]) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[10],COLOR_abstract_collection___SimpleCollection___add))(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10],  variable[9] /*n*/) /*IndexedCollection::add*/;
     variable[10] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[9] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[9] /*n*/, variable[10]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[9] /*n*/)( variable[9] /*n*/, variable[10]) /*PNode::parent=*/;
     continue_736: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[7],COLOR_abstract_collection___Iterator___next))(variable[7]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
   }
   break_736: while(0);
   variable[7] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[7]) /*AReassignFormExpr::_n_assign_op*/ =  variable[4] /*n_assign_op*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_assign_op*/)( variable[4] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_assign_op*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_assign_op*/)( variable[4] /*n_assign_op*/, variable[7]) /*PNode::parent=*/;
   }
   variable[7] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[7]) /*AReassignFormExpr::_n_value*/ =  variable[5] /*n_value*/;
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[5] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[5] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[5] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[5] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*n_value*/)( variable[5] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[7])) { /*if*/
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n_value*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n_value*/)( variable[5] /*n_value*/, variable[7]) /*PNode::parent=*/;
   }
   return_label735: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
@@ -21014,10 +21018,10 @@ void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASuperExpr____n_qualified(variable[3]) /*ASuperExpr::_n_qualified*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label737: while(false);
   tracehead = trace.prev;
@@ -21033,10 +21037,10 @@ void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[3]) /*ASuperExpr::_n_kwsuper*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label738: while(false);
   tracehead = trace.prev;
@@ -21051,16 +21055,16 @@ void parser_prod___ASuperExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8738); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[4]) /*ASuperExpr::_n_qualified*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8742); nit_exit(1);}
       variable[4] = variable[0];
@@ -21073,12 +21077,12 @@ void parser_prod___ASuperExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[4]) /*ASuperExpr::_n_kwsuper*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8752); nit_exit(1);}
       variable[4] = variable[0];
@@ -21091,38 +21095,38 @@ void parser_prod___ASuperExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[4]) /*ASuperExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[7]) /*ASuperExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8762); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[7]) /*ASuperExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASuperExpr____n_args(variable[7]) /*ASuperExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label739;
     }
     continue_740: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_740: while(0);
   return_label739: while(false);
@@ -21139,31 +21143,31 @@ void parser_prod___ASuperExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[3]) /*ASuperExpr::_n_qualified*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[3]) /*ASuperExpr::_n_qualified*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[3]) /*ASuperExpr::_n_kwsuper*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[3]) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperExpr____n_args(variable[3]) /*ASuperExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_742: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_742: while(0);
   return_label741: while(false);
@@ -21180,31 +21184,31 @@ void parser_prod___ASuperExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[3]) /*ASuperExpr::_n_qualified*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperExpr____n_qualified(variable[3]) /*ASuperExpr::_n_qualified*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[3]) /*ASuperExpr::_n_kwsuper*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[3]) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[4]) /*ASuperExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASuperExpr____n_args(variable[4]) /*ASuperExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_744: while(0);
@@ -21239,39 +21243,39 @@ void parser_prod___ASuperExpr___init_asuperexpr(val_t  self, val_t  param0, val_
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___ASuperExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___ASuperExpr___empty_init))(variable[5], init_table /*YYY*/) /*ASuperExpr::empty_init*/;
+  CALL_parser_prod___ASuperExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*ASuperExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___ASuperExpr____n_qualified(variable[5]) /*ASuperExpr::_n_qualified*/ =  variable[1] /*n_qualified*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_qualified*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_qualified*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_qualified*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_qualified*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_qualified*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_qualified*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_qualified*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_qualified*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_qualified*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_qualified*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_qualified*/)( variable[1] /*n_qualified*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_qualified*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_qualified*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_qualified*/)( variable[1] /*n_qualified*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[5]) /*ASuperExpr::_n_kwsuper*/ =  variable[2] /*n_kwsuper*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwsuper*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwsuper*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwsuper*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwsuper*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwsuper*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwsuper*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwsuper*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwsuper*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwsuper*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwsuper*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwsuper*/)( variable[2] /*n_kwsuper*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwsuper*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwsuper*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwsuper*/)( variable[2] /*n_kwsuper*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ASuperExpr____n_args(variable[5]) /*ASuperExpr::_n_args*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, 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_prod___ASuperExpr___init_asuperexpr, LOCATE_parser_prod, 8730); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___ASuperExpr____n_args(variable[8]) /*ASuperExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_747: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_747: while(0);
   return_label746: while(false);
@@ -21289,10 +21293,10 @@ void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label748: while(false);
   tracehead = trace.prev;
@@ -21308,10 +21312,10 @@ void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AInitExpr____n_kwinit(variable[3]) /*AInitExpr::_n_kwinit*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label749: while(false);
   tracehead = trace.prev;
@@ -21326,16 +21330,16 @@ void parser_prod___AInitExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8846); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8850); nit_exit(1);}
       variable[4] = variable[0];
@@ -21348,12 +21352,12 @@ void parser_prod___AInitExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[4]) /*AInitExpr::_n_kwinit*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8860); nit_exit(1);}
       variable[4] = variable[0];
@@ -21366,38 +21370,38 @@ void parser_prod___AInitExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[4]) /*AInitExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[7]) /*AInitExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8870); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[7]) /*AInitExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AInitExpr____n_args(variable[7]) /*AInitExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label750;
     }
     continue_751: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_751: while(0);
   return_label750: while(false);
@@ -21414,31 +21418,31 @@ void parser_prod___AInitExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[3]) /*AInitExpr::_n_kwinit*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[3]) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInitExpr____n_args(variable[3]) /*AInitExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_753: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_753: while(0);
   return_label752: while(false);
@@ -21455,31 +21459,31 @@ void parser_prod___AInitExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[3]) /*AInitExpr::_n_kwinit*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AInitExpr____n_kwinit(variable[3]) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[4]) /*AInitExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AInitExpr____n_args(variable[4]) /*AInitExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_755: while(0);
@@ -21514,39 +21518,39 @@ void parser_prod___AInitExpr___init_ainitexpr(val_t  self, val_t  param0, val_t
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AInitExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AInitExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AInitExpr___empty_init))(variable[5], init_table /*YYY*/) /*AInitExpr::empty_init*/;
+  CALL_parser_prod___AInitExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AInitExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[5]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AInitExpr____n_kwinit(variable[5]) /*AInitExpr::_n_kwinit*/ =  variable[2] /*n_kwinit*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwinit*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwinit*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwinit*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwinit*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwinit*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwinit*/)( variable[2] /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwinit*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwinit*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwinit*/)( variable[2] /*n_kwinit*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___AInitExpr____n_args(variable[5]) /*AInitExpr::_n_args*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_args*/)( variable[3] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, 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_prod___AInitExpr___init_ainitexpr, LOCATE_parser_prod, 8838); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___AInitExpr____n_args(variable[8]) /*AInitExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_758: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_758: while(0);
   return_label757: while(false);
@@ -21564,10 +21568,10 @@ void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label759: while(false);
   tracehead = trace.prev;
@@ -21582,16 +21586,16 @@ void parser_prod___ABraExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8949); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8953); nit_exit(1);}
       variable[4] = variable[0];
@@ -21604,74 +21608,74 @@ void parser_prod___ABraExpr___replace_child(val_t  self, val_t  param0, val_t  p
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8963); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label760;
     }
     continue_761: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_761: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8975); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[7]) /*ASendExpr::_n_closure_defs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label760;
     }
     continue_762: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_762: while(0);
   return_label760: while(false);
@@ -21688,36 +21692,36 @@ void parser_prod___ABraExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[3]) /*ABraFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_764: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_764: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[3]) /*ASendExpr::_n_closure_defs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_765: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_765: while(0);
   return_label763: while(false);
@@ -21734,23 +21738,23 @@ void parser_prod___ABraExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_767: while(0);
@@ -21758,15 +21762,15 @@ void parser_prod___ABraExpr___visit_all_reverse(val_t  self, val_t  param0) {
   break_767: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[4]) /*ASendExpr::_n_closure_defs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_768: while(0);
@@ -21801,52 +21805,52 @@ void parser_prod___ABraExpr___init_abraexpr(val_t  self, val_t  param0, val_t  p
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___ABraExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___ABraExpr___empty_init))(variable[5], init_table /*YYY*/) /*ABraExpr::empty_init*/;
+  CALL_parser_prod___ABraExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*ABraExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[5]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ABraFormExpr____n_args(variable[5]) /*ABraFormExpr::_n_args*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, 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_prod___ABraExpr___init_abraexpr, LOCATE_parser_prod, 8935); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[8]) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_771: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_771: while(0);
   variable[5] = variable[0];
   variable[6] = NEW_List_list___List___init(); /*new List[PClosureDef]*/
   ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[5]) /*ASendExpr::_n_closure_defs*/ = variable[6];
-  variable[5] = ((array___AbstractArray___iterator_t)CALL( variable[3] /*n_closure_defs*/,COLOR_abstract_collection___Collection___iterator))( variable[3] /*n_closure_defs*/) /*AbstractArray::iterator*/;
+  variable[5] = CALL_abstract_collection___Collection___iterator( variable[3] /*n_closure_defs*/)( variable[3] /*n_closure_defs*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*ArrayIterator::is_ok*/;
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[6])) break; /*for*/
-    variable[6] = ((array___ArrayIterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*ArrayIterator::item*/;
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/;
     variable[7] = variable[6];
     variable[8] = TAG_Bool(( variable[7] /*n*/==NIT_NULL) || VAL_ISA( variable[7] /*n*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
     if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___init_abraexpr, LOCATE_parser_prod, 8941); nit_exit(1);}
     variable[8] = variable[0];
     variable[8] = ATTR_parser_nodes___ASendExpr____n_closure_defs(variable[8]) /*ASendExpr::_n_closure_defs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8],  variable[7] /*n*/) /*IndexedCollection::add*/;
     variable[8] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[7] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[7] /*n*/)( variable[7] /*n*/, variable[8]) /*PNode::parent=*/;
     continue_772: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
   }
   break_772: while(0);
   return_label770: while(false);
@@ -21864,10 +21868,10 @@ void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label773: while(false);
   tracehead = trace.prev;
@@ -21883,10 +21887,10 @@ void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label774: while(false);
   tracehead = trace.prev;
@@ -21902,10 +21906,10 @@ void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label775: while(false);
   tracehead = trace.prev;
@@ -21920,16 +21924,16 @@ void parser_prod___ABraAssignExpr___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9075); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9079); nit_exit(1);}
       variable[4] = variable[0];
@@ -21942,48 +21946,48 @@ void parser_prod___ABraAssignExpr___replace_child(val_t  self, val_t  param0, va
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9089); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label776;
     }
     continue_777: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_777: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9101); nit_exit(1);}
       variable[4] = variable[0];
@@ -21996,12 +22000,12 @@ void parser_prod___ABraAssignExpr___replace_child(val_t  self, val_t  param0, va
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 9111); nit_exit(1);}
       variable[4] = variable[0];
@@ -22026,40 +22030,40 @@ void parser_prod___ABraAssignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[3]) /*ABraFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_779: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_779: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label778: while(false);
   tracehead = trace.prev;
@@ -22075,23 +22079,23 @@ void parser_prod___ABraAssignExpr___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_781: while(0);
@@ -22099,19 +22103,19 @@ void parser_prod___ABraAssignExpr___visit_all_reverse(val_t  self, val_t  param0
   break_781: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label780: while(false);
   tracehead = trace.prev;
@@ -22143,47 +22147,47 @@ void parser_prod___ABraAssignExpr___init_abraassignexpr(val_t  self, val_t  para
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___ABraAssignExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___ABraAssignExpr___empty_init))(variable[6], init_table /*YYY*/) /*ABraAssignExpr::empty_init*/;
+  CALL_parser_prod___ABraAssignExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*ABraAssignExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[6]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ABraFormExpr____n_args(variable[6]) /*ABraFormExpr::_n_args*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, 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_prod___ABraAssignExpr___init_abraassignexpr, LOCATE_parser_prod, 9059); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[9]) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_784: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_784: while(0);
   variable[6] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[6]) /*AAssignFormExpr::_n_assign*/ =  variable[3] /*n_assign*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_assign*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign*/)( variable[3] /*n_assign*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[6]) /*AAssignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
   }
   return_label783: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
@@ -22200,10 +22204,10 @@ void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label785: while(false);
   tracehead = trace.prev;
@@ -22219,10 +22223,10 @@ void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label786: while(false);
   tracehead = trace.prev;
@@ -22238,10 +22242,10 @@ void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label787: while(false);
   tracehead = trace.prev;
@@ -22256,16 +22260,16 @@ void parser_prod___ABraReassignExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9211); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9215); nit_exit(1);}
       variable[4] = variable[0];
@@ -22278,48 +22282,48 @@ void parser_prod___ABraReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9225); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[7]) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label788;
     }
     continue_789: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_789: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9237); nit_exit(1);}
       variable[4] = variable[0];
@@ -22332,12 +22336,12 @@ void parser_prod___ABraReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 9247); nit_exit(1);}
       variable[4] = variable[0];
@@ -22362,40 +22366,40 @@ void parser_prod___ABraReassignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[3]) /*ABraFormExpr::_n_args*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_791: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_791: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label790: while(false);
   tracehead = trace.prev;
@@ -22411,23 +22415,23 @@ void parser_prod___ABraReassignExpr___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASendExpr____n_expr(variable[3]) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[4]) /*ABraFormExpr::_n_args*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_793: while(0);
@@ -22435,19 +22439,19 @@ void parser_prod___ABraReassignExpr___visit_all_reverse(val_t  self, val_t  para
   break_793: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label792: while(false);
   tracehead = trace.prev;
@@ -22479,47 +22483,47 @@ void parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t  self, val_t
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___ABraReassignExpr___empty_init_t)CALL(variable[6],COLOR_parser_prod___ABraReassignExpr___empty_init))(variable[6], init_table /*YYY*/) /*ABraReassignExpr::empty_init*/;
+  CALL_parser_prod___ABraReassignExpr___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*ABraReassignExpr::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___ASendExpr____n_expr(variable[6]) /*ASendExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ABraFormExpr____n_args(variable[6]) /*ABraFormExpr::_n_args*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_args*/)( variable[2] /*n_args*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, 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_prod___ABraReassignExpr___init_abrareassignexpr, LOCATE_parser_prod, 9195); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___ABraFormExpr____n_args(variable[9]) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_796: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_796: while(0);
   variable[6] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[6]) /*AReassignFormExpr::_n_assign_op*/ =  variable[3] /*n_assign_op*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_assign_op*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_assign_op*/)( variable[3] /*n_assign_op*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[6]) /*AReassignFormExpr::_n_value*/ =  variable[4] /*n_value*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_value*/)( variable[4] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_value*/)( variable[4] /*n_value*/, variable[6]) /*PNode::parent=*/;
   }
   return_label795: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
@@ -22536,10 +22540,10 @@ void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label797: while(false);
   tracehead = trace.prev;
@@ -22554,16 +22558,16 @@ void parser_prod___AVarExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9316); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9320); nit_exit(1);}
       variable[4] = variable[0];
@@ -22588,11 +22592,11 @@ void parser_prod___AVarExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label799: while(false);
   tracehead = trace.prev;
@@ -22608,11 +22612,11 @@ void parser_prod___AVarExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label800: while(false);
   tracehead = trace.prev;
@@ -22641,13 +22645,13 @@ void parser_prod___AVarExpr___init_avarexpr(val_t  self, val_t  param0, int* ini
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AVarExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AVarExpr___empty_init))(variable[3], init_table /*YYY*/) /*AVarExpr::empty_init*/;
+  CALL_parser_prod___AVarExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AVarExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[3]) /*PNode::parent=*/;
   }
   return_label802: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
@@ -22664,10 +22668,10 @@ void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label803: while(false);
   tracehead = trace.prev;
@@ -22683,10 +22687,10 @@ void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label804: while(false);
   tracehead = trace.prev;
@@ -22702,10 +22706,10 @@ void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label805: while(false);
   tracehead = trace.prev;
@@ -22720,16 +22724,16 @@ void parser_prod___AVarAssignExpr___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9391); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9395); nit_exit(1);}
       variable[4] = variable[0];
@@ -22742,12 +22746,12 @@ void parser_prod___AVarAssignExpr___replace_child(val_t  self, val_t  param0, va
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9405); nit_exit(1);}
       variable[4] = variable[0];
@@ -22760,12 +22764,12 @@ void parser_prod___AVarAssignExpr___replace_child(val_t  self, val_t  param0, va
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9415); nit_exit(1);}
       variable[4] = variable[0];
@@ -22790,27 +22794,27 @@ void parser_prod___AVarAssignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label807: while(false);
   tracehead = trace.prev;
@@ -22826,27 +22830,27 @@ void parser_prod___AVarAssignExpr___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[3]) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAssignFormExpr____n_value(variable[3]) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label808: while(false);
   tracehead = trace.prev;
@@ -22877,27 +22881,27 @@ void parser_prod___AVarAssignExpr___init_avarassignexpr(val_t  self, val_t  para
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AVarAssignExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AVarAssignExpr___empty_init))(variable[5], init_table /*YYY*/) /*AVarAssignExpr::empty_init*/;
+  CALL_parser_prod___AVarAssignExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AVarAssignExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[5]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[5]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*n_assign*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_assign*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign*/)( variable[2] /*n_assign*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAssignFormExpr____n_value(variable[5]) /*AAssignFormExpr::_n_value*/ =  variable[3] /*n_value*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_value*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_value*/)( variable[3] /*n_value*/, variable[5]) /*PNode::parent=*/;
   }
   return_label810: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
@@ -22914,10 +22918,10 @@ void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label811: while(false);
   tracehead = trace.prev;
@@ -22933,10 +22937,10 @@ void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label812: while(false);
   tracehead = trace.prev;
@@ -22952,10 +22956,10 @@ void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label813: while(false);
   tracehead = trace.prev;
@@ -22970,16 +22974,16 @@ void parser_prod___AVarReassignExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9498); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9502); nit_exit(1);}
       variable[4] = variable[0];
@@ -22992,12 +22996,12 @@ void parser_prod___AVarReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9512); nit_exit(1);}
       variable[4] = variable[0];
@@ -23010,12 +23014,12 @@ void parser_prod___AVarReassignExpr___replace_child(val_t  self, val_t  param0,
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9522); nit_exit(1);}
       variable[4] = variable[0];
@@ -23040,27 +23044,27 @@ void parser_prod___AVarReassignExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label815: while(false);
   tracehead = trace.prev;
@@ -23076,27 +23080,27 @@ void parser_prod___AVarReassignExpr___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AVarFormExpr____n_id(variable[3]) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[3]) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AReassignFormExpr____n_value(variable[3]) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label816: while(false);
   tracehead = trace.prev;
@@ -23127,27 +23131,27 @@ void parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t  self, val_t
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AVarReassignExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AVarReassignExpr___empty_init))(variable[5], init_table /*YYY*/) /*AVarReassignExpr::empty_init*/;
+  CALL_parser_prod___AVarReassignExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AVarReassignExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AVarFormExpr____n_id(variable[5]) /*AVarFormExpr::_n_id*/ =  variable[1] /*n_id*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_id*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_id*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_id*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_id*/)( variable[1] /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_id*/)( variable[1] /*n_id*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[5]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*n_assign_op*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_assign_op*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_assign_op*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_assign_op*/)( variable[2] /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_assign_op*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_assign_op*/)( variable[2] /*n_assign_op*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AReassignFormExpr____n_value(variable[5]) /*AReassignFormExpr::_n_value*/ =  variable[3] /*n_value*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_value*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_value*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_value*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_value*/)( variable[3] /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_value*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_value*/)( variable[3] /*n_value*/, variable[5]) /*PNode::parent=*/;
   }
   return_label818: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
@@ -23164,10 +23168,10 @@ void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label819: while(false);
   tracehead = trace.prev;
@@ -23183,10 +23187,10 @@ void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label820: while(false);
   tracehead = trace.prev;
@@ -23201,16 +23205,16 @@ void parser_prod___ARangeExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9593); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9597); nit_exit(1);}
       variable[4] = variable[0];
@@ -23223,12 +23227,12 @@ void parser_prod___ARangeExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9607); nit_exit(1);}
       variable[4] = variable[0];
@@ -23253,19 +23257,19 @@ void parser_prod___ARangeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label822: while(false);
   tracehead = trace.prev;
@@ -23281,19 +23285,19 @@ void parser_prod___ARangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label823: while(false);
   tracehead = trace.prev;
@@ -23323,20 +23327,20 @@ void parser_prod___ARangeExpr___init_arangeexpr(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ARangeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ARangeExpr___empty_init))(variable[4], init_table /*YYY*/) /*ARangeExpr::empty_init*/;
+  CALL_parser_prod___ARangeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ARangeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label825: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
@@ -23353,10 +23357,10 @@ void parser_prod___ACrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label826: while(false);
   tracehead = trace.prev;
@@ -23372,10 +23376,10 @@ void parser_prod___ACrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label827: while(false);
   tracehead = trace.prev;
@@ -23390,16 +23394,16 @@ void parser_prod___ACrangeExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9672); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9676); nit_exit(1);}
       variable[4] = variable[0];
@@ -23412,12 +23416,12 @@ void parser_prod___ACrangeExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9686); nit_exit(1);}
       variable[4] = variable[0];
@@ -23442,19 +23446,19 @@ void parser_prod___ACrangeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label829: while(false);
   tracehead = trace.prev;
@@ -23470,19 +23474,19 @@ void parser_prod___ACrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label830: while(false);
   tracehead = trace.prev;
@@ -23512,20 +23516,20 @@ void parser_prod___ACrangeExpr___init_acrangeexpr(val_t  self, val_t  param0, va
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___ACrangeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___ACrangeExpr___empty_init))(variable[4], init_table /*YYY*/) /*ACrangeExpr::empty_init*/;
+  CALL_parser_prod___ACrangeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*ACrangeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label832: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
@@ -23542,10 +23546,10 @@ void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label833: while(false);
   tracehead = trace.prev;
@@ -23561,10 +23565,10 @@ void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label834: while(false);
   tracehead = trace.prev;
@@ -23579,16 +23583,16 @@ void parser_prod___AOrangeExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9751); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9755); nit_exit(1);}
       variable[4] = variable[0];
@@ -23601,12 +23605,12 @@ void parser_prod___AOrangeExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9765); nit_exit(1);}
       variable[4] = variable[0];
@@ -23631,19 +23635,19 @@ void parser_prod___AOrangeExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label836: while(false);
   tracehead = trace.prev;
@@ -23659,19 +23663,19 @@ void parser_prod___AOrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr(variable[3]) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ARangeExpr____n_expr2(variable[3]) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label837: while(false);
   tracehead = trace.prev;
@@ -23701,20 +23705,20 @@ void parser_prod___AOrangeExpr___init_aorangeexpr(val_t  self, val_t  param0, va
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrangeExpr].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AOrangeExpr___empty_init_t)CALL(variable[4],COLOR_parser_prod___AOrangeExpr___empty_init))(variable[4], init_table /*YYY*/) /*AOrangeExpr::empty_init*/;
+  CALL_parser_prod___AOrangeExpr___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AOrangeExpr::empty_init*/;
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[4]) /*PNode::parent=*/;
   }
   variable[4] = variable[0];
   ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*n_expr2*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_expr2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_expr2*/)( variable[2] /*n_expr2*/, variable[4]) /*PNode::parent=*/;
   }
   return_label839: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AOrangeExpr].i] = 1;
@@ -23730,42 +23734,42 @@ void parser_prod___AArrayExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9813); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[4]) /*AArrayExpr::_n_exprs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[7]) /*AArrayExpr::_n_exprs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9817); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[7]) /*AArrayExpr::_n_exprs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[7]) /*AArrayExpr::_n_exprs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label840;
     }
     continue_841: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_841: while(0);
   return_label840: while(false);
@@ -23782,15 +23786,15 @@ void parser_prod___AArrayExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[3]) /*AArrayExpr::_n_exprs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_843: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_843: while(0);
   return_label842: while(false);
@@ -23807,15 +23811,15 @@ void parser_prod___AArrayExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[4]) /*AArrayExpr::_n_exprs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[4]) /*AArrayExpr::_n_exprs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_845: while(0);
@@ -23848,25 +23852,25 @@ void parser_prod___AArrayExpr___init_aarrayexpr(val_t  self, val_t  param0, int*
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AArrayExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AArrayExpr___empty_init))(variable[3], init_table /*YYY*/) /*AArrayExpr::empty_init*/;
+  CALL_parser_prod___AArrayExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AArrayExpr::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___AArrayExpr____n_exprs(variable[3]) /*AArrayExpr::_n_exprs*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_exprs*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_exprs*/)( variable[1] /*n_exprs*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, 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_prod___AArrayExpr___init_aarrayexpr, LOCATE_parser_prod, 9805); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___AArrayExpr____n_exprs(variable[6]) /*AArrayExpr::_n_exprs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_848: 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_848: while(0);
   return_label847: while(false);
@@ -23884,10 +23888,10 @@ void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label849: while(false);
   tracehead = trace.prev;
@@ -23902,16 +23906,16 @@ void parser_prod___ASelfExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9870); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[4]) /*ASelfExpr::_n_kwself*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9874); nit_exit(1);}
       variable[4] = variable[0];
@@ -23936,11 +23940,11 @@ void parser_prod___ASelfExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label851: while(false);
   tracehead = trace.prev;
@@ -23956,11 +23960,11 @@ void parser_prod___ASelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label852: while(false);
   tracehead = trace.prev;
@@ -23989,13 +23993,13 @@ void parser_prod___ASelfExpr___init_aselfexpr(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ASelfExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ASelfExpr___empty_init))(variable[3], init_table /*YYY*/) /*ASelfExpr::empty_init*/;
+  CALL_parser_prod___ASelfExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ASelfExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ASelfExpr____n_kwself(variable[3]) /*ASelfExpr::_n_kwself*/ =  variable[1] /*n_kwself*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwself*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwself*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwself*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwself*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwself*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwself*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwself*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwself*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwself*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwself*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwself*/)( variable[1] /*n_kwself*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwself*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwself*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwself*/)( variable[1] /*n_kwself*/, variable[3]) /*PNode::parent=*/;
   }
   return_label854: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
@@ -24011,7 +24015,7 @@ void parser_prod___AImplicitSelfExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImplicitSelfExpr___replace_child, LOCATE_parser_prod, 9908); nit_exit(1);}
   return_label855: while(false);
   tracehead = trace.prev;
@@ -24063,7 +24067,7 @@ void parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t  self, int*
   variable[0] =  self;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].i]) return;
   variable[2] = variable[0];
-  ((parser_prod___AImplicitSelfExpr___empty_init_t)CALL(variable[2],COLOR_parser_prod___AImplicitSelfExpr___empty_init))(variable[2], init_table /*YYY*/) /*AImplicitSelfExpr::empty_init*/;
+  CALL_parser_prod___AImplicitSelfExpr___empty_init(variable[2])(variable[2], init_table /*YYY*/) /*AImplicitSelfExpr::empty_init*/;
   return_label859: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AImplicitSelfExpr].i] = 1;
   tracehead = trace.prev;
@@ -24079,10 +24083,10 @@ void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label860: while(false);
   tracehead = trace.prev;
@@ -24097,16 +24101,16 @@ void parser_prod___ATrueExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 9943); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[4]) /*ATrueExpr::_n_kwtrue*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 9947); nit_exit(1);}
       variable[4] = variable[0];
@@ -24131,11 +24135,11 @@ void parser_prod___ATrueExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label862: while(false);
   tracehead = trace.prev;
@@ -24151,11 +24155,11 @@ void parser_prod___ATrueExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label863: while(false);
   tracehead = trace.prev;
@@ -24184,13 +24188,13 @@ void parser_prod___ATrueExpr___init_atrueexpr(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ATrueExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ATrueExpr___empty_init))(variable[3], init_table /*YYY*/) /*ATrueExpr::empty_init*/;
+  CALL_parser_prod___ATrueExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ATrueExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[3]) /*ATrueExpr::_n_kwtrue*/ =  variable[1] /*n_kwtrue*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwtrue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwtrue*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwtrue*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwtrue*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwtrue*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwtrue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwtrue*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwtrue*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwtrue*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwtrue*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwtrue*/)( variable[1] /*n_kwtrue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwtrue*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwtrue*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwtrue*/)( variable[1] /*n_kwtrue*/, variable[3]) /*PNode::parent=*/;
   }
   return_label865: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
@@ -24207,10 +24211,10 @@ void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label866: while(false);
   tracehead = trace.prev;
@@ -24225,16 +24229,16 @@ void parser_prod___AFalseExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 9994); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[4]) /*AFalseExpr::_n_kwfalse*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 9998); nit_exit(1);}
       variable[4] = variable[0];
@@ -24259,11 +24263,11 @@ void parser_prod___AFalseExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label868: while(false);
   tracehead = trace.prev;
@@ -24279,11 +24283,11 @@ void parser_prod___AFalseExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label869: while(false);
   tracehead = trace.prev;
@@ -24312,13 +24316,13 @@ void parser_prod___AFalseExpr___init_afalseexpr(val_t  self, val_t  param0, int*
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AFalseExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AFalseExpr___empty_init))(variable[3], init_table /*YYY*/) /*AFalseExpr::empty_init*/;
+  CALL_parser_prod___AFalseExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AFalseExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[3]) /*AFalseExpr::_n_kwfalse*/ =  variable[1] /*n_kwfalse*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfalse*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfalse*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwfalse*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfalse*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwfalse*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwfalse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwfalse*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwfalse*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwfalse*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwfalse*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwfalse*/)( variable[1] /*n_kwfalse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwfalse*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwfalse*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwfalse*/)( variable[1] /*n_kwfalse*/, variable[3]) /*PNode::parent=*/;
   }
   return_label871: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
@@ -24335,10 +24339,10 @@ void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label872: while(false);
   tracehead = trace.prev;
@@ -24353,16 +24357,16 @@ void parser_prod___ANullExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 10045); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[4]) /*ANullExpr::_n_kwnull*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 10049); nit_exit(1);}
       variable[4] = variable[0];
@@ -24387,11 +24391,11 @@ void parser_prod___ANullExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label874: while(false);
   tracehead = trace.prev;
@@ -24407,11 +24411,11 @@ void parser_prod___ANullExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label875: while(false);
   tracehead = trace.prev;
@@ -24440,13 +24444,13 @@ void parser_prod___ANullExpr___init_anullexpr(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ANullExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ANullExpr___empty_init))(variable[3], init_table /*YYY*/) /*ANullExpr::empty_init*/;
+  CALL_parser_prod___ANullExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ANullExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ANullExpr____n_kwnull(variable[3]) /*ANullExpr::_n_kwnull*/ =  variable[1] /*n_kwnull*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnull*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnull*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnull*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnull*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwnull*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwnull*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwnull*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwnull*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwnull*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwnull*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwnull*/)( variable[1] /*n_kwnull*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwnull*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwnull*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwnull*/)( variable[1] /*n_kwnull*/, variable[3]) /*PNode::parent=*/;
   }
   return_label877: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
@@ -24463,10 +24467,10 @@ void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label878: while(false);
   tracehead = trace.prev;
@@ -24481,16 +24485,16 @@ void parser_prod___AIntExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 10096); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AIntExpr____n_number(variable[4]) /*AIntExpr::_n_number*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 10100); nit_exit(1);}
       variable[4] = variable[0];
@@ -24515,11 +24519,11 @@ void parser_prod___AIntExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label880: while(false);
   tracehead = trace.prev;
@@ -24535,11 +24539,11 @@ void parser_prod___AIntExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label881: while(false);
   tracehead = trace.prev;
@@ -24568,13 +24572,13 @@ void parser_prod___AIntExpr___init_aintexpr(val_t  self, val_t  param0, int* ini
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AIntExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AIntExpr___empty_init))(variable[3], init_table /*YYY*/) /*AIntExpr::empty_init*/;
+  CALL_parser_prod___AIntExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AIntExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AIntExpr____n_number(variable[3]) /*AIntExpr::_n_number*/ =  variable[1] /*n_number*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_number*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_number*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_number*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_number*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_number*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_number*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_number*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_number*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_number*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_number*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_number*/)( variable[1] /*n_number*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_number*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_number*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_number*/)( variable[1] /*n_number*/, variable[3]) /*PNode::parent=*/;
   }
   return_label883: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
@@ -24591,10 +24595,10 @@ void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label884: while(false);
   tracehead = trace.prev;
@@ -24609,16 +24613,16 @@ void parser_prod___AFloatExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 10147); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AFloatExpr____n_float(variable[4]) /*AFloatExpr::_n_float*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 10151); nit_exit(1);}
       variable[4] = variable[0];
@@ -24643,11 +24647,11 @@ void parser_prod___AFloatExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label886: while(false);
   tracehead = trace.prev;
@@ -24663,11 +24667,11 @@ void parser_prod___AFloatExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label887: while(false);
   tracehead = trace.prev;
@@ -24696,13 +24700,13 @@ void parser_prod___AFloatExpr___init_afloatexpr(val_t  self, val_t  param0, int*
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AFloatExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AFloatExpr___empty_init))(variable[3], init_table /*YYY*/) /*AFloatExpr::empty_init*/;
+  CALL_parser_prod___AFloatExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AFloatExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AFloatExpr____n_float(variable[3]) /*AFloatExpr::_n_float*/ =  variable[1] /*n_float*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_float*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_float*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_float*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_float*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_float*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_float*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_float*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_float*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_float*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_float*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_float*/)( variable[1] /*n_float*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_float*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_float*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_float*/)( variable[1] /*n_float*/, variable[3]) /*PNode::parent=*/;
   }
   return_label889: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
@@ -24719,10 +24723,10 @@ void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label890: while(false);
   tracehead = trace.prev;
@@ -24737,16 +24741,16 @@ void parser_prod___ACharExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 10198); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ACharExpr____n_char(variable[4]) /*ACharExpr::_n_char*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 10202); nit_exit(1);}
       variable[4] = variable[0];
@@ -24771,11 +24775,11 @@ void parser_prod___ACharExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label892: while(false);
   tracehead = trace.prev;
@@ -24791,11 +24795,11 @@ void parser_prod___ACharExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label893: while(false);
   tracehead = trace.prev;
@@ -24824,13 +24828,13 @@ void parser_prod___ACharExpr___init_acharexpr(val_t  self, val_t  param0, int* i
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ACharExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ACharExpr___empty_init))(variable[3], init_table /*YYY*/) /*ACharExpr::empty_init*/;
+  CALL_parser_prod___ACharExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ACharExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___ACharExpr____n_char(variable[3]) /*ACharExpr::_n_char*/ =  variable[1] /*n_char*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_char*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_char*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_char*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_char*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_char*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_char*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_char*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_char*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_char*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_char*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_char*/)( variable[1] /*n_char*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_char*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_char*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_char*/)( variable[1] /*n_char*/, variable[3]) /*PNode::parent=*/;
   }
   return_label895: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
@@ -24847,10 +24851,10 @@ void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label896: while(false);
   tracehead = trace.prev;
@@ -24865,16 +24869,16 @@ void parser_prod___AStringExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 10249); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AStringExpr____n_string(variable[4]) /*AStringExpr::_n_string*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 10253); nit_exit(1);}
       variable[4] = variable[0];
@@ -24899,11 +24903,11 @@ void parser_prod___AStringExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label898: while(false);
   tracehead = trace.prev;
@@ -24919,11 +24923,11 @@ void parser_prod___AStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label899: while(false);
   tracehead = trace.prev;
@@ -24952,13 +24956,13 @@ void parser_prod___AStringExpr___init_astringexpr(val_t  self, val_t  param0, in
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AStringExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AStringExpr___empty_init))(variable[3], init_table /*YYY*/) /*AStringExpr::empty_init*/;
+  CALL_parser_prod___AStringExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AStringExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStringExpr____n_string(variable[3]) /*AStringExpr::_n_string*/ =  variable[1] /*n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
   }
   return_label901: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
@@ -24975,10 +24979,10 @@ void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label902: while(false);
   tracehead = trace.prev;
@@ -24993,16 +24997,16 @@ void parser_prod___AStartStringExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 10300); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[4]) /*AStartStringExpr::_n_string*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 10304); nit_exit(1);}
       variable[4] = variable[0];
@@ -25027,11 +25031,11 @@ void parser_prod___AStartStringExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label904: while(false);
   tracehead = trace.prev;
@@ -25047,11 +25051,11 @@ void parser_prod___AStartStringExpr___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label905: while(false);
   tracehead = trace.prev;
@@ -25080,13 +25084,13 @@ void parser_prod___AStartStringExpr___init_astartstringexpr(val_t  self, val_t
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AStartStringExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AStartStringExpr___empty_init))(variable[3], init_table /*YYY*/) /*AStartStringExpr::empty_init*/;
+  CALL_parser_prod___AStartStringExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AStartStringExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AStartStringExpr____n_string(variable[3]) /*AStartStringExpr::_n_string*/ =  variable[1] /*n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
   }
   return_label907: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
@@ -25103,10 +25107,10 @@ void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label908: while(false);
   tracehead = trace.prev;
@@ -25121,16 +25125,16 @@ void parser_prod___AMidStringExpr___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10351); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[4]) /*AMidStringExpr::_n_string*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10355); nit_exit(1);}
       variable[4] = variable[0];
@@ -25155,11 +25159,11 @@ void parser_prod___AMidStringExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label910: while(false);
   tracehead = trace.prev;
@@ -25175,11 +25179,11 @@ void parser_prod___AMidStringExpr___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label911: while(false);
   tracehead = trace.prev;
@@ -25208,13 +25212,13 @@ void parser_prod___AMidStringExpr___init_amidstringexpr(val_t  self, val_t  para
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AMidStringExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AMidStringExpr___empty_init))(variable[3], init_table /*YYY*/) /*AMidStringExpr::empty_init*/;
+  CALL_parser_prod___AMidStringExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AMidStringExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMidStringExpr____n_string(variable[3]) /*AMidStringExpr::_n_string*/ =  variable[1] /*n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
   }
   return_label913: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
@@ -25231,10 +25235,10 @@ void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label914: while(false);
   tracehead = trace.prev;
@@ -25249,16 +25253,16 @@ void parser_prod___AEndStringExpr___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10402); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[4]) /*AEndStringExpr::_n_string*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10406); nit_exit(1);}
       variable[4] = variable[0];
@@ -25283,11 +25287,11 @@ void parser_prod___AEndStringExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label916: while(false);
   tracehead = trace.prev;
@@ -25303,11 +25307,11 @@ void parser_prod___AEndStringExpr___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label917: while(false);
   tracehead = trace.prev;
@@ -25336,13 +25340,13 @@ void parser_prod___AEndStringExpr___init_aendstringexpr(val_t  self, val_t  para
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AEndStringExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AEndStringExpr___empty_init))(variable[3], init_table /*YYY*/) /*AEndStringExpr::empty_init*/;
+  CALL_parser_prod___AEndStringExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AEndStringExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AEndStringExpr____n_string(variable[3]) /*AEndStringExpr::_n_string*/ =  variable[1] /*n_string*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_string*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_string*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_string*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_string*/)( variable[1] /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_string*/)( variable[1] /*n_string*/, variable[3]) /*PNode::parent=*/;
   }
   return_label919: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AEndStringExpr].i] = 1;
@@ -25358,42 +25362,42 @@ void parser_prod___ASuperstringExpr___replace_child(val_t  self, val_t  param0,
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10448); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[4]) /*ASuperstringExpr::_n_exprs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[7]) /*ASuperstringExpr::_n_exprs*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10452); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[7]) /*ASuperstringExpr::_n_exprs*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[7]) /*ASuperstringExpr::_n_exprs*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label920;
     }
     continue_921: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_921: while(0);
   return_label920: while(false);
@@ -25410,15 +25414,15 @@ void parser_prod___ASuperstringExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[3]) /*ASuperstringExpr::_n_exprs*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_923: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_923: while(0);
   return_label922: while(false);
@@ -25435,15 +25439,15 @@ void parser_prod___ASuperstringExpr___visit_all_reverse(val_t  self, val_t  para
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[4]) /*ASuperstringExpr::_n_exprs*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[4]) /*ASuperstringExpr::_n_exprs*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_925: while(0);
@@ -25476,25 +25480,25 @@ void parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t  self, val_t
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ASuperstringExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___ASuperstringExpr___empty_init))(variable[3], init_table /*YYY*/) /*ASuperstringExpr::empty_init*/;
+  CALL_parser_prod___ASuperstringExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ASuperstringExpr::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[PExpr]*/
   ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[3]) /*ASuperstringExpr::_n_exprs*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_exprs*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_exprs*/)( variable[1] /*n_exprs*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, 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_prod___ASuperstringExpr___init_asuperstringexpr, LOCATE_parser_prod, 10440); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___ASuperstringExpr____n_exprs(variable[6]) /*ASuperstringExpr::_n_exprs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_928: 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_928: while(0);
   return_label927: while(false);
@@ -25512,10 +25516,10 @@ void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label929: while(false);
   tracehead = trace.prev;
@@ -25530,16 +25534,16 @@ void parser_prod___AParExpr___replace_child(val_t  self, val_t  param0, val_t  p
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10505); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10509); nit_exit(1);}
       variable[4] = variable[0];
@@ -25564,11 +25568,11 @@ void parser_prod___AParExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label931: while(false);
   tracehead = trace.prev;
@@ -25584,11 +25588,11 @@ void parser_prod___AParExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label932: while(false);
   tracehead = trace.prev;
@@ -25617,13 +25621,13 @@ void parser_prod___AParExpr___init_aparexpr(val_t  self, val_t  param0, int* ini
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AParExpr___empty_init_t)CALL(variable[3],COLOR_parser_prod___AParExpr___empty_init))(variable[3], init_table /*YYY*/) /*AParExpr::empty_init*/;
+  CALL_parser_prod___AParExpr___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AParExpr::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AProxyExpr____n_expr(variable[3]) /*AProxyExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[3]) /*PNode::parent=*/;
   }
   return_label934: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AParExpr].i] = 1;
@@ -25640,10 +25644,10 @@ void parser_prod___AAsCastExpr___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_expr(variable[3]) /*AAsCastExpr::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label935: while(false);
   tracehead = trace.prev;
@@ -25659,10 +25663,10 @@ void parser_prod___AAsCastExpr___n_kwas__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[3]) /*AAsCastExpr::_n_kwas*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label936: while(false);
   tracehead = trace.prev;
@@ -25678,10 +25682,10 @@ void parser_prod___AAsCastExpr___n_type__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_type(variable[3]) /*AAsCastExpr::_n_type*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label937: while(false);
   tracehead = trace.prev;
@@ -25696,16 +25700,16 @@ void parser_prod___AAsCastExpr___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10580); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[4]) /*AAsCastExpr::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10584); nit_exit(1);}
       variable[4] = variable[0];
@@ -25718,12 +25722,12 @@ void parser_prod___AAsCastExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[4]) /*AAsCastExpr::_n_kwas*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10594); nit_exit(1);}
       variable[4] = variable[0];
@@ -25736,12 +25740,12 @@ void parser_prod___AAsCastExpr___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[4]) /*AAsCastExpr::_n_type*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10604); nit_exit(1);}
       variable[4] = variable[0];
@@ -25766,27 +25770,27 @@ void parser_prod___AAsCastExpr___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[3]) /*AAsCastExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[3]) /*AAsCastExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[3]) /*AAsCastExpr::_n_kwas*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[3]) /*AAsCastExpr::_n_kwas*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[3]) /*AAsCastExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[3]) /*AAsCastExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label939: while(false);
   tracehead = trace.prev;
@@ -25802,27 +25806,27 @@ void parser_prod___AAsCastExpr___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[3]) /*AAsCastExpr::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_expr(variable[3]) /*AAsCastExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[3]) /*AAsCastExpr::_n_kwas*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[3]) /*AAsCastExpr::_n_kwas*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[3]) /*AAsCastExpr::_n_type*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AAsCastExpr____n_type(variable[3]) /*AAsCastExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label940: while(false);
   tracehead = trace.prev;
@@ -25853,27 +25857,27 @@ void parser_prod___AAsCastExpr___init_aascastexpr(val_t  self, val_t  param0, va
   variable[3] =  param2;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
   variable[5] = variable[0];
-  ((parser_prod___AAsCastExpr___empty_init_t)CALL(variable[5],COLOR_parser_prod___AAsCastExpr___empty_init))(variable[5], init_table /*YYY*/) /*AAsCastExpr::empty_init*/;
+  CALL_parser_prod___AAsCastExpr___empty_init(variable[5])(variable[5], init_table /*YYY*/) /*AAsCastExpr::empty_init*/;
   variable[5] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_expr(variable[5]) /*AAsCastExpr::_n_expr*/ =  variable[1] /*n_expr*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_expr*/)( variable[1] /*n_expr*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[5]) /*AAsCastExpr::_n_kwas*/ =  variable[2] /*n_kwas*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwas*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwas*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwas*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwas*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_kwas*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_kwas*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_kwas*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_kwas*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_kwas*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwas*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwas*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_kwas*/)( variable[2] /*n_kwas*/, variable[5]) /*PNode::parent=*/;
   }
   variable[5] = variable[0];
   ATTR_parser_nodes___AAsCastExpr____n_type(variable[5]) /*AAsCastExpr::_n_type*/ =  variable[3] /*n_type*/;
-  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_type*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_type*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_type*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_type*/)( variable[3] /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[5])) { /*if*/
     variable[5] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_type*/, variable[5]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_type*/)( variable[3] /*n_type*/, variable[5]) /*PNode::parent=*/;
   }
   return_label942: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AAsCastExpr].i] = 1;
@@ -25890,10 +25894,10 @@ void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label943: while(false);
   tracehead = trace.prev;
@@ -25908,16 +25912,16 @@ void parser_prod___APlusAssignOp___replace_child(val_t  self, val_t  param0, val
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 10663); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[4]) /*APlusAssignOp::_n_pluseq*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 10667); nit_exit(1);}
       variable[4] = variable[0];
@@ -25942,11 +25946,11 @@ void parser_prod___APlusAssignOp___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label945: while(false);
   tracehead = trace.prev;
@@ -25962,11 +25966,11 @@ void parser_prod___APlusAssignOp___visit_all_reverse(val_t  self, val_t  param0)
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label946: while(false);
   tracehead = trace.prev;
@@ -25995,13 +25999,13 @@ void parser_prod___APlusAssignOp___init_aplusassignop(val_t  self, val_t  param0
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___APlusAssignOp___empty_init_t)CALL(variable[3],COLOR_parser_prod___APlusAssignOp___empty_init))(variable[3], init_table /*YYY*/) /*APlusAssignOp::empty_init*/;
+  CALL_parser_prod___APlusAssignOp___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*APlusAssignOp::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[3]) /*APlusAssignOp::_n_pluseq*/ =  variable[1] /*n_pluseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_pluseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_pluseq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_pluseq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_pluseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_pluseq*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_pluseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_pluseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_pluseq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_pluseq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_pluseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_pluseq*/)( variable[1] /*n_pluseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_pluseq*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_pluseq*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_pluseq*/)( variable[1] /*n_pluseq*/, variable[3]) /*PNode::parent=*/;
   }
   return_label948: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
@@ -26018,10 +26022,10 @@ void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label949: while(false);
   tracehead = trace.prev;
@@ -26036,16 +26040,16 @@ void parser_prod___AMinusAssignOp___replace_child(val_t  self, val_t  param0, va
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 10714); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[4]) /*AMinusAssignOp::_n_minuseq*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 10718); nit_exit(1);}
       variable[4] = variable[0];
@@ -26070,11 +26074,11 @@ void parser_prod___AMinusAssignOp___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label951: while(false);
   tracehead = trace.prev;
@@ -26090,11 +26094,11 @@ void parser_prod___AMinusAssignOp___visit_all_reverse(val_t  self, val_t  param0
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label952: while(false);
   tracehead = trace.prev;
@@ -26123,13 +26127,13 @@ void parser_prod___AMinusAssignOp___init_aminusassignop(val_t  self, val_t  para
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___AMinusAssignOp___empty_init_t)CALL(variable[3],COLOR_parser_prod___AMinusAssignOp___empty_init))(variable[3], init_table /*YYY*/) /*AMinusAssignOp::empty_init*/;
+  CALL_parser_prod___AMinusAssignOp___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*AMinusAssignOp::empty_init*/;
   variable[3] = variable[0];
   ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[3]) /*AMinusAssignOp::_n_minuseq*/ =  variable[1] /*n_minuseq*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minuseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minuseq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minuseq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minuseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_minuseq*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_minuseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_minuseq*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_minuseq*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_minuseq*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_minuseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_minuseq*/)( variable[1] /*n_minuseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_minuseq*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_minuseq*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_minuseq*/)( variable[1] /*n_minuseq*/, variable[3]) /*PNode::parent=*/;
   }
   return_label954: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
@@ -26146,10 +26150,10 @@ void parser_prod___AClosureDef___n_kwwith__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_kwwith(variable[3]) /*AClosureDef::_n_kwwith*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label955: while(false);
   tracehead = trace.prev;
@@ -26165,10 +26169,10 @@ void parser_prod___AClosureDef___n_kwdo__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_kwdo(variable[3]) /*AClosureDef::_n_kwdo*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label956: while(false);
   tracehead = trace.prev;
@@ -26184,10 +26188,10 @@ void parser_prod___AClosureDef___n_expr__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_expr(variable[3]) /*AClosureDef::_n_expr*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label957: while(false);
   tracehead = trace.prev;
@@ -26202,16 +26206,16 @@ void parser_prod___AClosureDef___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 10796); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[4]) /*AClosureDef::_n_kwwith*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 10800); nit_exit(1);}
       variable[4] = variable[0];
@@ -26224,48 +26228,48 @@ void parser_prod___AClosureDef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[4]) /*AClosureDef::_n_id*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[7]) /*AClosureDef::_n_id*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AClosureDef___replace_child, LOCATE_parser_prod, 10810); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[7]) /*AClosureDef::_n_id*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AClosureDef____n_id(variable[7]) /*AClosureDef::_n_id*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label958;
     }
     continue_959: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_959: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[4]) /*AClosureDef::_n_kwdo*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 10822); nit_exit(1);}
       variable[4] = variable[0];
@@ -26278,12 +26282,12 @@ void parser_prod___AClosureDef___replace_child(val_t  self, val_t  param0, val_t
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDef____n_expr(variable[4]) /*AClosureDef::_n_expr*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AClosureDef___replace_child, LOCATE_parser_prod, 10832); nit_exit(1);}
       variable[4] = variable[0];
@@ -26308,40 +26312,40 @@ void parser_prod___AClosureDef___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[3]) /*AClosureDef::_n_kwwith*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[3]) /*AClosureDef::_n_kwwith*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_id(variable[3]) /*AClosureDef::_n_id*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_961: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_961: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[3]) /*AClosureDef::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[3]) /*AClosureDef::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[3]) /*AClosureDef::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[3]) /*AClosureDef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label960: while(false);
   tracehead = trace.prev;
@@ -26357,23 +26361,23 @@ void parser_prod___AClosureDef___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[3]) /*AClosureDef::_n_kwwith*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_kwwith(variable[3]) /*AClosureDef::_n_kwwith*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[4]) /*AClosureDef::_n_id*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AClosureDef____n_id(variable[4]) /*AClosureDef::_n_id*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_963: while(0);
@@ -26381,19 +26385,19 @@ void parser_prod___AClosureDef___visit_all_reverse(val_t  self, val_t  param0) {
   break_963: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[3]) /*AClosureDef::_n_kwdo*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_kwdo(variable[3]) /*AClosureDef::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[3]) /*AClosureDef::_n_expr*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AClosureDef____n_expr(variable[3]) /*AClosureDef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label962: while(false);
   tracehead = trace.prev;
@@ -26425,47 +26429,47 @@ void parser_prod___AClosureDef___init_aclosuredef(val_t  self, val_t  param0, va
   variable[4] =  param3;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i]) return;
   variable[6] = variable[0];
-  ((parser_prod___AClosureDef___empty_init_t)CALL(variable[6],COLOR_parser_prod___AClosureDef___empty_init))(variable[6], init_table /*YYY*/) /*AClosureDef::empty_init*/;
+  CALL_parser_prod___AClosureDef___empty_init(variable[6])(variable[6], init_table /*YYY*/) /*AClosureDef::empty_init*/;
   variable[6] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_kwwith(variable[6]) /*AClosureDef::_n_kwwith*/ =  variable[1] /*n_kwwith*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwith*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n_kwwith*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n_kwwith*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n_kwwith*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n_kwwith*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n_kwwith*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n_kwwith*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n_kwwith*/)( variable[1] /*n_kwwith*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   variable[7] = NEW_List_list___List___init(); /*new List[TId]*/
   ATTR_parser_nodes___AClosureDef____n_id(variable[6]) /*AClosureDef::_n_id*/ = variable[7];
-  variable[6] = ((array___AbstractArray___iterator_t)CALL( variable[2] /*n_id*/,COLOR_abstract_collection___Collection___iterator))( variable[2] /*n_id*/) /*AbstractArray::iterator*/;
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[2] /*n_id*/)( variable[2] /*n_id*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(variable[6]) /*ArrayIterator::is_ok*/;
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[7])) break; /*for*/
-    variable[7] = ((array___ArrayIterator___item_t)CALL(variable[6],COLOR_abstract_collection___Iterator___item))(variable[6]) /*ArrayIterator::item*/;
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/;
     variable[8] = variable[7];
     variable[9] = TAG_Bool(( variable[8] /*n*/==NIT_NULL) || VAL_ISA( variable[8] /*n*/, 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_prod___AClosureDef___init_aclosuredef, LOCATE_parser_prod, 10780); nit_exit(1);}
     variable[9] = variable[0];
     variable[9] = ATTR_parser_nodes___AClosureDef____n_id(variable[9]) /*AClosureDef::_n_id*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[9],COLOR_abstract_collection___SimpleCollection___add))(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9],  variable[8] /*n*/) /*IndexedCollection::add*/;
     variable[9] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[8] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[8] /*n*/)( variable[8] /*n*/, variable[9]) /*PNode::parent=*/;
     continue_966: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
   }
   break_966: while(0);
   variable[6] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_kwdo(variable[6]) /*AClosureDef::_n_kwdo*/ =  variable[3] /*n_kwdo*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable[3] /*n_kwdo*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[3] /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable[3] /*n_kwdo*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[3] /*n_kwdo*/)( variable[3] /*n_kwdo*/, variable[6]) /*PNode::parent=*/;
   }
   variable[6] = variable[0];
   ATTR_parser_nodes___AClosureDef____n_expr(variable[6]) /*AClosureDef::_n_expr*/ =  variable[4] /*n_expr*/;
-  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable[4] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[6] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable[4] /*n_expr*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*n_expr*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*n_expr*/)( variable[4] /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[6])) { /*if*/
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_expr*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[4] /*n_expr*/)( variable[4] /*n_expr*/, variable[6]) /*PNode::parent=*/;
   }
   return_label965: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AClosureDef].i] = 1;
@@ -26482,10 +26486,10 @@ void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   ATTR_parser_nodes___AQualified____n_classid(variable[3]) /*AQualified::_n_classid*/ =  variable[1] /*n*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ ==  NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
   return_label967: while(false);
   tracehead = trace.prev;
@@ -26500,52 +26504,52 @@ void parser_prod___AQualified___replace_child(val_t  self, val_t  param0, val_t
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 10908); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[4]) /*AQualified::_n_id*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[7]) /*AQualified::_n_id*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___AQualified___replace_child, LOCATE_parser_prod, 10912); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[7]) /*AQualified::_n_id*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[7]) /*AQualified::_n_id*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label968;
     }
     continue_969: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_969: while(0);
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AQualified____n_classid(variable[4]) /*AQualified::_n_classid*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable[4])) { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 10924); nit_exit(1);}
       variable[4] = variable[0];
@@ -26570,24 +26574,24 @@ void parser_prod___AQualified___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AQualified____n_id(variable[3]) /*AQualified::_n_id*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_971: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_971: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[3]) /*AQualified::_n_classid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[3]) /*AQualified::_n_classid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label970: while(false);
   tracehead = trace.prev;
@@ -26603,15 +26607,15 @@ void parser_prod___AQualified___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[4]) /*AQualified::_n_id*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___AQualified____n_id(variable[4]) /*AQualified::_n_id*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_973: while(0);
@@ -26619,11 +26623,11 @@ void parser_prod___AQualified___visit_all_reverse(val_t  self, val_t  param0) {
   break_973: while(0);
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[3]) /*AQualified::_n_classid*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___AQualified____n_classid(variable[3]) /*AQualified::_n_classid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label972: while(false);
   tracehead = trace.prev;
@@ -26653,33 +26657,33 @@ void parser_prod___AQualified___init_aqualified(val_t  self, val_t  param0, val_
   variable[2] =  param1;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i]) return;
   variable[4] = variable[0];
-  ((parser_prod___AQualified___empty_init_t)CALL(variable[4],COLOR_parser_prod___AQualified___empty_init))(variable[4], init_table /*YYY*/) /*AQualified::empty_init*/;
+  CALL_parser_prod___AQualified___empty_init(variable[4])(variable[4], init_table /*YYY*/) /*AQualified::empty_init*/;
   variable[4] = variable[0];
   variable[5] = NEW_List_list___List___init(); /*new List[TId]*/
   ATTR_parser_nodes___AQualified____n_id(variable[4]) /*AQualified::_n_id*/ = variable[5];
-  variable[4] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_id*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_id*/) /*AbstractArray::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_id*/)( variable[1] /*n_id*/) /*AbstractArray::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((array___ArrayIterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*ArrayIterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((array___ArrayIterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*ArrayIterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/;
     variable[6] = variable[5];
     variable[7] = TAG_Bool(( variable[6] /*n*/==NIT_NULL) || VAL_ISA( variable[6] /*n*/, 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_prod___AQualified___init_aqualified, LOCATE_parser_prod, 10896); nit_exit(1);}
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___AQualified____n_id(variable[7]) /*AQualified::_n_id*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[7],COLOR_abstract_collection___SimpleCollection___add))(variable[7],  variable[6] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7],  variable[6] /*n*/) /*IndexedCollection::add*/;
     variable[7] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[6] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[6] /*n*/, variable[7]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[6] /*n*/)( variable[6] /*n*/, variable[7]) /*PNode::parent=*/;
     continue_976: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
   }
   break_976: while(0);
   variable[4] = variable[0];
   ATTR_parser_nodes___AQualified____n_classid(variable[4]) /*AQualified::_n_classid*/ =  variable[2] /*n_classid*/;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_classid*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_classid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*n_classid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_classid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*n_classid*/,COLOR_kernel___Object_____eqeq))( variable[2] /*n_classid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*n_classid*/ ==  NIT_NULL /*null*/) || (( variable[2] /*n_classid*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*n_classid*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*n_classid*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*n_classid*/)( variable[2] /*n_classid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[4])) { /*if*/
     variable[4] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_classid*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_classid*/, variable[4]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[2] /*n_classid*/)( variable[2] /*n_classid*/, variable[4]) /*PNode::parent=*/;
   }
   return_label975: while(false);
   init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AQualified].i] = 1;
@@ -26695,42 +26699,42 @@ void parser_prod___ADoc___replace_child(val_t  self, val_t  param0, val_t  param
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___replace_child, LOCATE_parser_prod, 10976); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[4]) /*ADoc::_n_comment*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[4]); /*new Range[Int]*/
   variable[4] = variable[5];
-  variable[4] = ((range___Range___iterator_t)CALL(variable[4],COLOR_abstract_collection___Collection___iterator))(variable[4]) /*Range::iterator*/;
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(variable[4]) /*Iterator::is_ok*/;
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable[5])) break; /*for*/
-    variable[5] = ((abstract_collection___Iterator___item_t)CALL(variable[4],COLOR_abstract_collection___Iterator___item))(variable[4]) /*Iterator::item*/;
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/;
     variable[6] = variable[5];
     variable[7] = variable[0];
     variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[7]) /*ADoc::_n_comment*/;
-    variable[7] = ((list___List_____bra_t)CALL(variable[7],COLOR_abstract_collection___Map_____bra))(variable[7],  variable[6] /*i*/) /*List::[]*/;
-    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[7],COLOR_kernel___Object_____eqeq))(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
+    variable[7] = CALL_abstract_collection___Map_____bra(variable[7])(variable[7],  variable[6] /*i*/) /*List::[]*/;
+    variable[7] = TAG_Bool((variable[7] ==  variable[1] /*old_child*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7],  variable[1] /*old_child*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
       if (UNTAG_Bool(variable[7])) { /*if*/
         variable[7] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, 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_prod___ADoc___replace_child, LOCATE_parser_prod, 10980); nit_exit(1);}
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[7]) /*ADoc::_n_comment*/;
-        ((list___List_____braeq_t)CALL(variable[7],COLOR_abstract_collection___Map_____braeq))(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
+        CALL_abstract_collection___Map_____braeq(variable[7])(variable[7],  variable[6] /*i*/,  variable[2] /*new_child*/) /*List::[]=*/;
         variable[7] = variable[0];
-        ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
+        CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[7]) /*PNode::parent=*/;
       } else { /*if*/
         variable[7] = variable[0];
         variable[7] = ATTR_parser_nodes___ADoc____n_comment(variable[7]) /*ADoc::_n_comment*/;
-        ((list___List___remove_at_t)CALL(variable[7],COLOR_abstract_collection___Map___remove_at))(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
+        CALL_abstract_collection___Map___remove_at(variable[7])(variable[7],  variable[6] /*i*/) /*List::remove_at*/;
       }
       goto return_label977;
     }
     continue_978: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
   break_978: while(0);
   return_label977: while(false);
@@ -26747,15 +26751,15 @@ void parser_prod___ADoc___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___ADoc____n_comment(variable[3]) /*ADoc::_n_comment*/;
-  variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*List::iterator*/;
   while (true) { /*for*/
-    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ListIterator::is_ok*/;
     if (!UNTAG_Bool(variable[4])) break; /*for*/
-    variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ListIterator::item*/;
     variable[5] = variable[4];
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/,  variable[5] /*n*/) /*Visitor::visit*/;
     continue_980: while(0);
-    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ListIterator::next*/;
   }
   break_980: while(0);
   return_label979: while(false);
@@ -26772,15 +26776,15 @@ void parser_prod___ADoc___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[4]) /*ADoc::_n_comment*/;
-  variable[4] = ((list___List___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*List::length*/;
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*List::length*/;
   variable[3] = variable[4];
   while (true) { /*while*/
     variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable[4])) break; /* while*/
     variable[4] = variable[0];
     variable[4] = ATTR_parser_nodes___ADoc____n_comment(variable[4]) /*ADoc::_n_comment*/;
-    variable[4] = ((list___List_____bra_t)CALL(variable[4],COLOR_abstract_collection___Map_____bra))(variable[4],  variable[3] /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
+    variable[4] = CALL_abstract_collection___Map_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*List::[]*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*Visitor::visit*/;
     variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
     variable[3] = variable[4] /*i=*/;
     continue_982: while(0);
@@ -26813,25 +26817,25 @@ void parser_prod___ADoc___init_adoc(val_t  self, val_t  param0, int* init_table)
   variable[1] =  param0;
   if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ADoc].i]) return;
   variable[3] = variable[0];
-  ((parser_prod___ADoc___empty_init_t)CALL(variable[3],COLOR_parser_prod___ADoc___empty_init))(variable[3], init_table /*YYY*/) /*ADoc::empty_init*/;
+  CALL_parser_prod___ADoc___empty_init(variable[3])(variable[3], init_table /*YYY*/) /*ADoc::empty_init*/;
   variable[3] = variable[0];
   variable[4] = NEW_List_list___List___init(); /*new List[TComment]*/
   ATTR_parser_nodes___ADoc____n_comment(variable[3]) /*ADoc::_n_comment*/ = variable[4];
-  variable[3] = ((array___AbstractArray___iterator_t)CALL( variable[1] /*n_comment*/,COLOR_abstract_collection___Collection___iterator))( variable[1] /*n_comment*/) /*AbstractArray::iterator*/;
+  variable[3] = CALL_abstract_collection___Collection___iterator( variable[1] /*n_comment*/)( variable[1] /*n_comment*/) /*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];
     variable[6] = TAG_Bool(( variable[5] /*n*/==NIT_NULL) || VAL_ISA( variable[5] /*n*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
     if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___init_adoc, LOCATE_parser_prod, 10968); nit_exit(1);}
     variable[6] = variable[0];
     variable[6] = ATTR_parser_nodes___ADoc____n_comment(variable[6]) /*ADoc::_n_comment*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable[6],COLOR_abstract_collection___SimpleCollection___add))(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6],  variable[5] /*n*/) /*IndexedCollection::add*/;
     variable[6] = variable[0];
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[5] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[6]) /*PNode::parent=*/;
     continue_985: 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_985: while(0);
   return_label984: while(false);
@@ -26848,23 +26852,23 @@ void parser_prod___Start___replace_child(val_t  self, val_t  param0, val_t  para
   variable[0] =  self;
   variable[1] =  param0;
   variable[2] =  param1;
-  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*old_child*/,COLOR_kernel___Object_____eqeq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*old_child*/ ==  NIT_NULL /*null*/) || (( variable[1] /*old_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 11021); nit_exit(1);}
   variable[4] = variable[0];
   variable[4] = ATTR_parser_nodes___Start____n_base(variable[4]) /*Start::_n_base*/;
-  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
+  variable[4] = TAG_Bool((variable[4] ==  variable[1] /*old_child*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*old_child*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  variable[1] /*old_child*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+    variable[4] = TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*new_child*/)( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable[4])) { /*if*/
     } else { /*if*/
       variable[4] = variable[0];
-      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
+      CALL_parser_prod___PNode___parent__eq( variable[2] /*new_child*/)( variable[2] /*new_child*/, variable[4]) /*PNode::parent=*/;
       variable[4] = TAG_Bool(( variable[2] /*new_child*/==NIT_NULL) || VAL_ISA( variable[2] /*new_child*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
       if (!UNTAG_Bool(variable[4])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 11026); nit_exit(1);}
       variable[4] = variable[0];
       ATTR_parser_nodes___Start____n_base(variable[4]) /*Start::_n_base*/ =  variable[2] /*new_child*/;
     }
-    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*old_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*PNode::parent=*/;
+    CALL_parser_prod___PNode___parent__eq( variable[1] /*old_child*/)( variable[1] /*old_child*/,  NIT_NULL /*null*/) /*PNode::parent=*/;
     goto return_label986;
   }
   return_label986: while(false);
@@ -26881,11 +26885,11 @@ void parser_prod___Start___visit_all(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___Start____n_base(variable[3]) /*Start::_n_base*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___Start____n_base(variable[3]) /*Start::_n_base*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label987: while(false);
   tracehead = trace.prev;
@@ -26901,11 +26905,11 @@ void parser_prod___Start___visit_all_reverse(val_t  self, val_t  param0) {
   variable[1] =  param0;
   variable[3] = variable[0];
   variable[3] = ATTR_parser_nodes___Start____n_base(variable[3]) /*Start::_n_base*/;
-  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable[3])) { /*if*/
     variable[3] = variable[0];
     variable[3] = ATTR_parser_nodes___Start____n_base(variable[3]) /*Start::_n_base*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
+    CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*Visitor::visit*/;
   }
   return_label988: while(false);
   tracehead = trace.prev;