Update c_src.
[nit.git] / c_src / parser_prod._sep.c
index a035dc8..d86274c 100644 (file)
@@ -2,6 +2,8 @@
 #include "parser_prod._sep.h"
 val_t parser_prod___PNode___parent(val_t  self) {
   struct trace_t trace = {NULL, NULL, 9, LOCATE_parser_prod___PNode___parent};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   tracehead = trace.prev;
@@ -9,6 +11,8 @@ val_t parser_prod___PNode___parent(val_t  self) {
 }
 void parser_prod___PNode___parent__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 9, LOCATE_parser_prod___PNode___parent__eq};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   ATTR_parser_prod___PNode____parent( self) /*PNode::_parent*/ =  param0;
@@ -17,205 +21,358 @@ void parser_prod___PNode___parent__eq(val_t  self, val_t  param0) {
 }
 void parser_prod___PNode___remove_child(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 12, LOCATE_parser_prod___PNode___remove_child};
-  val_t variable0;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ((parser_prod___PNode___replace_child_t)CALL( self,COLOR_parser_prod___PNode___replace_child))( self,  variable0 /*child*/,  NIT_NULL /*null*/) /*PNode::replace_child*/;
+  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*/;
+  return_label0: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 18, LOCATE_parser_prod___PNode___replace_child};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___PNode___remove_child, LOCATE_parser_prod, 18);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 18);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___replace_with(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 21, LOCATE_parser_prod___PNode___replace_with};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_prod___PNode____parent( self) /*PNode::_parent*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_prod___PNode____parent( self) /*PNode::_parent*/;
-    ((parser_prod___PNode___replace_child_t)CALL(variable1,COLOR_parser_prod___PNode___replace_child))(variable1,  self,  variable0 /*node*/) /*PNode::replace_child*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label1: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 29, LOCATE_parser_prod___PNode___visit_all};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___PNode___replace_with, LOCATE_parser_prod, 29);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 29);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___PNode___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 33, LOCATE_parser_prod___PNode___visit_all_reverse};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___PNode___replace_with, LOCATE_parser_prod, 33);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 33);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t parser_prod___PNode___locate(val_t  self) {
   struct trace_t trace = {NULL, NULL, 37, LOCATE_parser_prod___PNode___locate};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___PNode___replace_with, LOCATE_parser_prod, 37);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 37);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t parser_prod___PNode___line_number(val_t  self) {
   struct trace_t trace = {NULL, NULL, 40, LOCATE_parser_prod___PNode___line_number};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___PNode___replace_with, LOCATE_parser_prod, 40);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 40);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 void parser_prod___PNode___printl(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 43, LOCATE_parser_prod___PNode___printl};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = NEW_String_string___String___init(); /*new String*/
-  variable2 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((parser_prod___PNode___locate_t)CALL( self,COLOR_parser_prod___PNode___locate))( self) /*PNode::locate*/;
-  variable5 = variable4;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 =  variable0 /*str*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable8) /*String::append*/;
-  variable9 = NEW_String_string___String___with_native(BOX_NativeString("\n"), TAG_Int(1)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable10) /*String::append*/;
-  ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable1) /*Object::print*/;
+  val_t variable[14];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[3] = variable[0];
+  variable[4] = NEW_String_string___String___init(); /*new 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*/;
+  variable[7] = variable[0];
+  variable[7] = ((parser_prod___PNode___locate_t)CALL(variable[7],COLOR_parser_prod___PNode___locate))(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*/;
+  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*/;
+  variable[11] =  variable[1] /*str*/;
+  ((string___String___append_t)CALL(variable[4],COLOR_abstract_collection___IndexedCollection___append))(variable[4], variable[11]) /*String::append*/;
+  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*/;
+  return_label2: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Token___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 51, LOCATE_parser_prod___Token___visit_all};
-  val_t variable0;
+void parser_prod___Token___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 53, LOCATE_parser_prod___Token___replace_child};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  return_label3: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Token___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 52, LOCATE_parser_prod___Token___visit_all_reverse};
-  val_t variable0;
+void parser_prod___Token___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 51, LOCATE_parser_prod___Token___visit_all};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label4: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Token___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 53, LOCATE_parser_prod___Token___replace_child};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___Token___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 52, LOCATE_parser_prod___Token___visit_all_reverse};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label5: while(false);
   tracehead = trace.prev;
   return;
 }
 val_t parser_prod___Token___locate(val_t  self) {
   struct trace_t trace = {NULL, NULL, 55, LOCATE_parser_prod___Token___locate};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  val_t variable14;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 = NEW_String_string___String___init(); /*new String*/
-  variable1 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable2 = variable1;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable2) /*String::append*/;
-  variable3 = ((lexer___Token___filename_t)CALL( self,COLOR_lexer___Token___filename))( self) /*Token::filename*/;
-  variable4 = variable3;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable4) /*String::append*/;
-  variable5 = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable6) /*String::append*/;
-  variable7 = ((lexer___Token___line_t)CALL( self,COLOR_lexer___Token___line))( self) /*Token::line*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable8) /*String::append*/;
-  variable9 = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable10) /*String::append*/;
-  variable11 = ((lexer___Token___pos_t)CALL( self,COLOR_lexer___Token___pos))( self) /*Token::pos*/;
-  variable12 = variable11;
-  variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable12) /*String::append*/;
-  variable13 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable14 = variable13;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable14) /*String::append*/;
+  val_t variable[17];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[2] = NEW_String_string___String___init(); /*new 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*/;
+  variable[5] = variable[0];
+  variable[5] = ((lexer___Token___filename_t)CALL(variable[5],COLOR_lexer___Token___filename))(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*/;
+  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*/;
+  variable[9] = variable[0];
+  variable[9] = ((lexer___Token___line_t)CALL(variable[9],COLOR_lexer___Token___line))(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[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*/;
+  variable[13] = variable[0];
+  variable[13] = ((lexer___Token___pos_t)CALL(variable[13],COLOR_lexer___Token___pos))(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[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*/;
+  variable[1] = variable[2];
   goto return_label6;
   return_label6: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 val_t parser_prod___Token___line_number(val_t  self) {
   struct trace_t trace = {NULL, NULL, 60, LOCATE_parser_prod___Token___line_number};
-  val_t variable0;
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 = ((lexer___Token___line_t)CALL( self,COLOR_lexer___Token___line))( self) /*Token::line*/;
+  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[1] = variable[2];
   goto return_label7;
   return_label7: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
+}
+void parser_prod___Prod___replace_with(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 83, LOCATE_parser_prod___Prod___replace_with};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  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*/;
+  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] = 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=*/;
+  return_label8: while(false);
+  tracehead = trace.prev;
+  return;
+}
+val_t parser_prod___Prod___locate(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 70, LOCATE_parser_prod___Prod___locate};
+  val_t variable[17];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  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::==*/)))));
+  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[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[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[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[3] = TAG_Bool((variable[3])==(variable[4]));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = NEW_String_string___String___init(); /*new 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*/;
+    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[7] = variable[6];
+    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[7]) /*String::append*/;
+    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*/;
+    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[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*/;
+    variable[1] = variable[3];
+    goto return_label9;
+  } else { /*if*/
+    variable[3] = NEW_String_string___String___init(); /*new 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*/;
+    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[7] = variable[6];
+    ((string___String___append_t)CALL(variable[3],COLOR_abstract_collection___IndexedCollection___append))(variable[3], variable[7]) /*String::append*/;
+    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*/;
+    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[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[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*/;
+    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[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*/;
+    variable[1] = variable[3];
+    goto return_label9;
+  }
+  return_label9: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+val_t parser_prod___Prod___line_number(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 91, LOCATE_parser_prod___Prod___line_number};
+  val_t variable[3];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  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::==*/)))))));
+  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[1] = variable[2];
+    goto return_label10;
+  } else { /*if*/
+    variable[1] =  TAG_Int(0);
+    goto return_label10;
+  }
+  return_label10: while(false);
+  tracehead = trace.prev;
+  return variable[1];
 }
 val_t parser_prod___Prod___first_token(val_t  self) {
   struct trace_t trace = {NULL, NULL, 64, LOCATE_parser_prod___Prod___first_token};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   tracehead = trace.prev;
@@ -223,6 +380,8 @@ val_t parser_prod___Prod___first_token(val_t  self) {
 }
 void parser_prod___Prod___first_token__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 64, LOCATE_parser_prod___Prod___first_token__eq};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   ATTR_parser_prod___Prod____first_token( self) /*Prod::_first_token*/ =  param0;
@@ -231,6 +390,8 @@ void parser_prod___Prod___first_token__eq(val_t  self, val_t  param0) {
 }
 val_t parser_prod___Prod___last_token(val_t  self) {
   struct trace_t trace = {NULL, NULL, 67, LOCATE_parser_prod___Prod___last_token};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   tracehead = trace.prev;
@@ -238,151 +399,30 @@ val_t parser_prod___Prod___last_token(val_t  self) {
 }
 void parser_prod___Prod___last_token__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 67, LOCATE_parser_prod___Prod___last_token__eq};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   ATTR_parser_prod___Prod____last_token( self) /*Prod::_last_token*/ =  param0;
   tracehead = trace.prev;
   return;
 }
-val_t parser_prod___Prod___locate(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 70, LOCATE_parser_prod___Prod___locate};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
-    val_t variable5;
-    val_t variable6;
-    val_t variable7;
-    val_t variable8;
-    val_t variable9;
-    val_t variable10;
-    val_t variable11;
-    val_t variable12;
-    val_t variable13;
-    val_t variable14;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-  variable0 = TAG_Bool((variable0 ==  NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0,  NIT_NULL /*null*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = NEW_String_string___String___with_native(BOX_NativeString("????"), TAG_Int(4)); /*new String*/
-    goto return_label8;
-  }
-  variable1 = ((parser_prod___Prod___last_token_t)CALL( self,COLOR_parser_prod___Prod___last_token))( self) /*Prod::last_token*/;
-  variable1 = ((lexer___Token___pos_t)CALL(variable1,COLOR_lexer___Token___pos))(variable1) /*Token::pos*/;
-  variable2 = ((parser_prod___Prod___last_token_t)CALL( self,COLOR_parser_prod___Prod___last_token))( self) /*Prod::last_token*/;
-  variable2 = ((lexer___Token___text_t)CALL(variable2,COLOR_lexer___Token___text))(variable2) /*Token::text*/;
-  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
-  variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int(variable2));
-  variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
-  variable0 = variable1;
-  variable1 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-  variable1 = ((lexer___Token___line_t)CALL(variable1,COLOR_lexer___Token___line))(variable1) /*Token::line*/;
-  variable2 = ((parser_prod___Prod___last_token_t)CALL( self,COLOR_parser_prod___Prod___last_token))( self) /*Prod::last_token*/;
-  variable2 = ((lexer___Token___line_t)CALL(variable2,COLOR_lexer___Token___line))(variable2) /*Token::line*/;
-  variable1 = TAG_Bool((variable1)==(variable2));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = NEW_String_string___String___init(); /*new String*/
-    variable2 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-    variable3 = variable2;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-    variable4 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-    variable4 = ((parser_prod___Token___locate_t)CALL(variable4,COLOR_parser_prod___PNode___locate))(variable4) /*Token::locate*/;
-    variable5 = variable4;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-    variable6 = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)); /*new String*/
-    variable7 = variable6;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-    variable8 =  variable0 /*lastpos*/;
-    variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable8) /*String::append*/;
-    variable9 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-    variable10 = variable9;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable10) /*String::append*/;
-    variable0 = variable1;
-    goto return_label8;
-  } else { /*if*/
-    variable1 = NEW_String_string___String___init(); /*new String*/
-    variable2 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-    variable3 = variable2;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-    variable4 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-    variable4 = ((parser_prod___Token___locate_t)CALL(variable4,COLOR_parser_prod___PNode___locate))(variable4) /*Token::locate*/;
-    variable5 = variable4;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-    variable6 = NEW_String_string___String___with_native(BOX_NativeString("--"), TAG_Int(2)); /*new String*/
-    variable7 = variable6;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-    variable8 = ((parser_prod___Prod___last_token_t)CALL( self,COLOR_parser_prod___Prod___last_token))( self) /*Prod::last_token*/;
-    variable8 = ((lexer___Token___line_t)CALL(variable8,COLOR_lexer___Token___line))(variable8) /*Token::line*/;
-    variable9 = variable8;
-    variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-    variable10 = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)); /*new String*/
-    variable11 = variable10;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-    variable12 =  variable0 /*lastpos*/;
-    variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable12) /*String::append*/;
-    variable13 = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-    variable14 = variable13;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable14) /*String::append*/;
-    variable0 = variable1;
-    goto return_label8;
-  }
-  return_label8: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-void parser_prod___Prod___replace_with(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 83, LOCATE_parser_prod___Prod___replace_with};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ((parser_prod___Prod___replace_with_t)CALL( self,COLOR_SUPER_parser_prod___Prod___replace_with))( self,  param0) /*super Prod::replace_with*/;
-  variable1 = TAG_Bool(( variable0 /*n*/==NIT_NULL) || VAL_ISA( variable0 /*n*/, COLOR_Prod, ID_Prod)) /*cast Prod*/;
-  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Prod___replace_with, LOCATE_parser_prod, 86); nit_exit(1);}
-  variable1 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-  ((parser_prod___Prod___first_token__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___Prod___first_token__eq))( variable0 /*n*/, variable1) /*Prod::first_token=*/;
-  variable1 = ((parser_prod___Prod___last_token_t)CALL( self,COLOR_parser_prod___Prod___last_token))( self) /*Prod::last_token*/;
-  ((parser_prod___Prod___last_token__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___Prod___last_token__eq))( variable0 /*n*/, variable1) /*Prod::last_token=*/;
-  tracehead = trace.prev;
-  return;
-}
-val_t parser_prod___Prod___line_number(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 91, LOCATE_parser_prod___Prod___line_number};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-  variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 ==  NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = ((parser_prod___Prod___first_token_t)CALL( self,COLOR_parser_prod___Prod___first_token))( self) /*Prod::first_token*/;
-    variable0 = ((lexer___Token___line_t)CALL(variable0,COLOR_lexer___Token___line))(variable0) /*Token::line*/;
-    goto return_label10;
-  } else { /*if*/
-    variable0 =  TAG_Int(0);
-    goto return_label10;
-  }
-  return_label10: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
 void parser_prod___Visitor___visit(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 103, LOCATE_parser_prod___Visitor___visit};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Prod___line_number, LOCATE_parser_prod, 103);
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_parser_prod, 103);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Visitor___init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 0, LOCATE_parser_prod___Visitor___init};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
   tracehead = trace.prev;
@@ -390,20533 +430,26442 @@ void parser_prod___Visitor___init(val_t  self, int* init_table) {
 }
 void parser_prod___AModule___n_packagedecl__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 110, LOCATE_parser_prod___AModule___n_packagedecl__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AModule___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 118, LOCATE_parser_prod___AModule___empty_init};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AModule___init_amodule(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 120, LOCATE_parser_prod___AModule___init_amodule};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i]) return;
-  ((parser_prod___AModule___empty_init_t)CALL( self,COLOR_parser_prod___AModule___empty_init))( self, init_table /*YYY*/) /*AModule::empty_init*/;
-  ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/ =  variable0 /*n_packagedecl*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_packagedecl*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_packagedecl*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_packagedecl*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_packagedecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_packagedecl*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_packagedecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_packagedecl*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_packagedecl*/,  self) /*PNode::parent=*/;
-  }
-  variable3 = NEW_List_list___List___init(); /*new List[PImport]*/
-  ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_imports*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_imports*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
-    variable5 = TAG_Bool(( variable4 /*n*/==NIT_NULL) || VAL_ISA( variable4 /*n*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-    if (!UNTAG_Bool(variable5)) { 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);}
-    variable5 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PNode::parent=*/;
-    continue_14: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  break_14: while(0);
-  variable3 = NEW_List_list___List___init(); /*new List[PClassdef]*/
-  ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_classdefs*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_classdefs*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
-    variable5 = TAG_Bool(( variable4 /*n*/==NIT_NULL) || VAL_ISA( variable4 /*n*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-    if (!UNTAG_Bool(variable5)) { 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);}
-    variable5 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PNode::parent=*/;
-    continue_15: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
-  }
-  break_15: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
+  return_label11: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 145, LOCATE_parser_prod___AModule___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label16;
-  }
-  variable2 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AModule____n_packagedecl(variable[4]) /*AModule::_n_packagedecl*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AModule____n_packagedecl(variable[4]) /*AModule::_n_packagedecl*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label12;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label16;
-    }
-    continue_17: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_17: while(0);
-  variable2 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+      goto return_label12;
+    }
+    continue_13: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label16;
+      goto return_label12;
     }
-    continue_18: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_14: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_18: while(0);
-  return_label16: while(false);
+  break_14: while(0);
+  return_label12: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 184, LOCATE_parser_prod___AModule___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_20: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_20: while(0);
-  variable1 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_16: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_21: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_17: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_21: while(0);
+  break_17: while(0);
+  return_label15: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AModule___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 197, LOCATE_parser_prod___AModule___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_19: while(0);
+  }
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_20: while(0);
+  }
+  break_20: while(0);
+  return_label18: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AModule___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 118, LOCATE_parser_prod___AModule___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AModule____n_packagedecl( self) /*AModule::_n_packagedecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
-  while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AModule____n_imports( self) /*AModule::_n_imports*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i]) return;
+  return_label21: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AModule___init_amodule(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 120, LOCATE_parser_prod___AModule___init_amodule};
+  val_t variable[9];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
     continue_23: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
   }
   break_23: while(0);
-  variable2 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
-  while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AModule____n_classdefs( self) /*AModule::_n_classdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
     continue_24: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
   }
   break_24: while(0);
+  return_label22: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AModule].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 219, LOCATE_parser_prod___APackagedecl___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label25: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___n_kwpackage__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 226, LOCATE_parser_prod___APackagedecl___n_kwpackage__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label26: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___n_id__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 233, LOCATE_parser_prod___APackagedecl___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 241, LOCATE_parser_prod___APackagedecl___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___APackagedecl___init_apackagedecl(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 243, LOCATE_parser_prod___APackagedecl___init_apackagedecl};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i]) return;
-  ((parser_prod___APackagedecl___empty_init_t)CALL( self,COLOR_parser_prod___APackagedecl___empty_init))( self, init_table /*YYY*/) /*APackagedecl::empty_init*/;
-  ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/ =  variable0 /*n_doc*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/ =  variable1 /*n_kwpackage*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwpackage*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwpackage*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwpackage*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwpackage*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwpackage*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwpackage*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwpackage*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwpackage*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/ =  variable2 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_id*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
+  return_label27: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 264, LOCATE_parser_prod___APackagedecl___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label30;
-  }
-  variable2 = ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwpackage, ID_TKwpackage)) /*cast TKwpackage*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label30;
-  }
-  variable2 = ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label30;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APackagedecl____n_doc(variable[4]) /*APackagedecl::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APackagedecl____n_doc(variable[4]) /*APackagedecl::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label28;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[4]) /*APackagedecl::_n_kwpackage*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APackagedecl____n_kwpackage(variable[4]) /*APackagedecl::_n_kwpackage*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label28;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APackagedecl____n_id(variable[4]) /*APackagedecl::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APackagedecl____n_id(variable[4]) /*APackagedecl::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label28;
   }
-  return_label30: while(false);
+  return_label28: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 299, LOCATE_parser_prod___APackagedecl___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label29: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APackagedecl___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 312, LOCATE_parser_prod___APackagedecl___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_doc( self) /*APackagedecl::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_kwpackage( self) /*APackagedecl::_n_kwpackage*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APackagedecl____n_id( self) /*APackagedecl::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label30: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 326, LOCATE_parser_prod___AImport___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APackagedecl___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 241, LOCATE_parser_prod___APackagedecl___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i]) return;
+  return_label31: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 333, LOCATE_parser_prod___AImport___n_kwimport__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APackagedecl___init_apackagedecl(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 243, LOCATE_parser_prod___APackagedecl___init_apackagedecl};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label32: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APackagedecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 340, LOCATE_parser_prod___AImport___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImport___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 326, LOCATE_parser_prod___AImport___n_visibility__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label33: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 348, LOCATE_parser_prod___AImport___empty_init};
+void parser_prod___AImport___n_kwimport__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 333, LOCATE_parser_prod___AImport___n_kwimport__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label34: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImport___init_aimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 350, LOCATE_parser_prod___AImport___init_aimport};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AImport___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 340, LOCATE_parser_prod___AImport___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i]) return;
-  ((parser_prod___AImport___empty_init_t)CALL( self,COLOR_parser_prod___AImport___empty_init))( self, init_table /*YYY*/) /*AImport::empty_init*/;
-  ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  variable0 /*n_visibility*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  variable1 /*n_kwimport*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwimport*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwimport*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwimport*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwimport*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwimport*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  variable2 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_id*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
+  return_label35: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 371, LOCATE_parser_prod___AImport___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label38;
-  }
-  variable2 = ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label38;
-  }
-  variable2 = ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label38;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AImport____n_visibility(variable[4]) /*AImport::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AImport____n_visibility(variable[4]) /*AImport::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label36;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AImport____n_kwimport(variable[4]) /*AImport::_n_kwimport*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AImport____n_kwimport(variable[4]) /*AImport::_n_kwimport*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label36;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AImport____n_id(variable[4]) /*AImport::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AImport____n_id(variable[4]) /*AImport::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label36;
   }
-  return_label38: while(false);
+  return_label36: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 406, LOCATE_parser_prod___AImport___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label37: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImport___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 419, LOCATE_parser_prod___AImport___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_visibility( self) /*AImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_kwimport( self) /*AImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AImport____n_id( self) /*AImport::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label38: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 433, LOCATE_parser_prod___ANoImport___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImport___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 348, LOCATE_parser_prod___AImport___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i]) return;
+  return_label39: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 440, LOCATE_parser_prod___ANoImport___n_kwimport__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImport___init_aimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 350, LOCATE_parser_prod___AImport___init_aimport};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label40: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 447, LOCATE_parser_prod___ANoImport___n_kwend__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANoImport___n_visibility__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 433, LOCATE_parser_prod___ANoImport___n_visibility__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label41: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 455, LOCATE_parser_prod___ANoImport___empty_init};
+void parser_prod___ANoImport___n_kwimport__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 440, LOCATE_parser_prod___ANoImport___n_kwimport__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label42: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANoImport___init_anoimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 457, LOCATE_parser_prod___ANoImport___init_anoimport};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___ANoImport___n_kwend__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 447, LOCATE_parser_prod___ANoImport___n_kwend__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i]) return;
-  ((parser_prod___ANoImport___empty_init_t)CALL( self,COLOR_parser_prod___ANoImport___empty_init))( self, init_table /*YYY*/) /*ANoImport::empty_init*/;
-  ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/ =  variable0 /*n_visibility*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/ =  variable1 /*n_kwimport*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwimport*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwimport*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwimport*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwimport*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwimport*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwimport*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwimport*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwimport*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/ =  variable2 /*n_kwend*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_kwend*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_kwend*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwend*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_kwend*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwend*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_kwend*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_kwend*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_kwend*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
+  return_label43: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 478, LOCATE_parser_prod___ANoImport___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label46;
-  }
-  variable2 = ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label46;
-  }
-  variable2 = ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label46;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ANoImport____n_visibility(variable[4]) /*ANoImport::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANoImport____n_visibility(variable[4]) /*ANoImport::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label44;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ANoImport____n_kwimport(variable[4]) /*ANoImport::_n_kwimport*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANoImport____n_kwimport(variable[4]) /*ANoImport::_n_kwimport*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label44;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ANoImport____n_kwend(variable[4]) /*ANoImport::_n_kwend*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANoImport____n_kwend(variable[4]) /*ANoImport::_n_kwend*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label44;
   }
-  return_label46: while(false);
+  return_label44: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 513, LOCATE_parser_prod___ANoImport___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label45: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANoImport___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 526, LOCATE_parser_prod___ANoImport___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_visibility( self) /*ANoImport::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_kwimport( self) /*ANoImport::_n_kwimport*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANoImport____n_kwend( self) /*ANoImport::_n_kwend*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label46: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APublicVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 541, LOCATE_parser_prod___APublicVisibility___empty_init};
+void parser_prod___ANoImport___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 455, LOCATE_parser_prod___ANoImport___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i]) return;
+  return_label47: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 543, LOCATE_parser_prod___APublicVisibility___init_apublicvisibility};
+void parser_prod___ANoImport___init_anoimport(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 457, LOCATE_parser_prod___ANoImport___init_anoimport};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
-  ((parser_prod___APublicVisibility___empty_init_t)CALL( self,COLOR_parser_prod___APublicVisibility___empty_init))( self, init_table /*YYY*/) /*APublicVisibility::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label48: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANoImport].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APublicVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 548, LOCATE_parser_prod___APublicVisibility___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
+  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::==*/)))))));
+  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;
   return;
 }
 void parser_prod___APublicVisibility___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 553, LOCATE_parser_prod___APublicVisibility___visit_all};
-  val_t variable0;
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label50: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APublicVisibility___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 557, LOCATE_parser_prod___APublicVisibility___visit_all_reverse};
-  val_t variable0;
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label51: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 562, LOCATE_parser_prod___APrivateVisibility___n_kwprivate__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APublicVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 541, LOCATE_parser_prod___APublicVisibility___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i]) return;
+  return_label52: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 570, LOCATE_parser_prod___APrivateVisibility___empty_init};
+void parser_prod___APublicVisibility___init_apublicvisibility(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 543, LOCATE_parser_prod___APublicVisibility___init_apublicvisibility};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->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*/;
+  return_label53: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APublicVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 572, LOCATE_parser_prod___APrivateVisibility___init_aprivatevisibility};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APrivateVisibility___n_kwprivate__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 562, LOCATE_parser_prod___APrivateVisibility___n_kwprivate__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
-  ((parser_prod___APrivateVisibility___empty_init_t)CALL( self,COLOR_parser_prod___APrivateVisibility___empty_init))( self, init_table /*YYY*/) /*APrivateVisibility::empty_init*/;
-  ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  variable0 /*n_kwprivate*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwprivate*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwprivate*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwprivate*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwprivate*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwprivate*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwprivate*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwprivate*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwprivate*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
+  return_label54: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 583, LOCATE_parser_prod___APrivateVisibility___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[4]) /*APrivateVisibility::_n_kwprivate*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APrivateVisibility____n_kwprivate(variable[4]) /*APrivateVisibility::_n_kwprivate*/ =  NIT_NULL /*null*/;
     }
-    goto return_label57;
+    goto return_label55;
   }
-  return_label57: while(false);
+  return_label55: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 598, LOCATE_parser_prod___APrivateVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label56: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APrivateVisibility___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 605, LOCATE_parser_prod___APrivateVisibility___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APrivateVisibility____n_kwprivate( self) /*APrivateVisibility::_n_kwprivate*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label57: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 613, LOCATE_parser_prod___AProtectedVisibility___n_kwprotected__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APrivateVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 570, LOCATE_parser_prod___APrivateVisibility___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i]) return;
+  return_label58: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 621, LOCATE_parser_prod___AProtectedVisibility___empty_init};
+void parser_prod___APrivateVisibility___init_aprivatevisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 572, LOCATE_parser_prod___APrivateVisibility___init_aprivatevisibility};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label59: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APrivateVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 623, LOCATE_parser_prod___AProtectedVisibility___init_aprotectedvisibility};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 613, LOCATE_parser_prod___AProtectedVisibility___n_kwprotected__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
-  ((parser_prod___AProtectedVisibility___empty_init_t)CALL( self,COLOR_parser_prod___AProtectedVisibility___empty_init))( self, init_table /*YYY*/) /*AProtectedVisibility::empty_init*/;
-  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  variable0 /*n_kwprotected*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwprotected*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwprotected*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwprotected*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwprotected*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwprotected*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwprotected*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwprotected*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwprotected*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
+  return_label60: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 634, LOCATE_parser_prod___AProtectedVisibility___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[4]) /*AProtectedVisibility::_n_kwprotected*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(variable[4]) /*AProtectedVisibility::_n_kwprotected*/ =  NIT_NULL /*null*/;
     }
-    goto return_label63;
+    goto return_label61;
   }
-  return_label63: while(false);
+  return_label61: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 649, LOCATE_parser_prod___AProtectedVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label62: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AProtectedVisibility___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 656, LOCATE_parser_prod___AProtectedVisibility___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProtectedVisibility____n_kwprotected( self) /*AProtectedVisibility::_n_kwprotected*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label63: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 664, LOCATE_parser_prod___AIntrudeVisibility___n_kwintrude__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AProtectedVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 621, LOCATE_parser_prod___AProtectedVisibility___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i]) return;
+  return_label64: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 672, LOCATE_parser_prod___AIntrudeVisibility___empty_init};
+void parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 623, LOCATE_parser_prod___AProtectedVisibility___init_aprotectedvisibility};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label65: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AProtectedVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 674, LOCATE_parser_prod___AIntrudeVisibility___init_aintrudevisibility};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 664, LOCATE_parser_prod___AIntrudeVisibility___n_kwintrude__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
-  ((parser_prod___AIntrudeVisibility___empty_init_t)CALL( self,COLOR_parser_prod___AIntrudeVisibility___empty_init))( self, init_table /*YYY*/) /*AIntrudeVisibility::empty_init*/;
-  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  variable0 /*n_kwintrude*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwintrude*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwintrude*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwintrude*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwintrude*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwintrude*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwintrude*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwintrude*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwintrude*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
+  return_label66: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 685, LOCATE_parser_prod___AIntrudeVisibility___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[4]) /*AIntrudeVisibility::_n_kwintrude*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(variable[4]) /*AIntrudeVisibility::_n_kwintrude*/ =  NIT_NULL /*null*/;
     }
-    goto return_label69;
+    goto return_label67;
   }
-  return_label69: while(false);
+  return_label67: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 700, LOCATE_parser_prod___AIntrudeVisibility___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label68: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntrudeVisibility___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 707, LOCATE_parser_prod___AIntrudeVisibility___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude( self) /*AIntrudeVisibility::_n_kwintrude*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label69: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIntrudeVisibility___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 672, LOCATE_parser_prod___AIntrudeVisibility___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i]) return;
+  return_label70: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 674, LOCATE_parser_prod___AIntrudeVisibility___init_aintrudevisibility};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label71: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntrudeVisibility].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 715, LOCATE_parser_prod___AClassdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label72: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 722, LOCATE_parser_prod___AClassdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label73: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 729, LOCATE_parser_prod___AClassdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label74: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___n_classkind__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 736, LOCATE_parser_prod___AClassdef___n_classkind__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label75: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___n_id__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 743, LOCATE_parser_prod___AClassdef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 751, LOCATE_parser_prod___AClassdef___empty_init};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AClassdef___init_aclassdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, val_t  param7, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 753, LOCATE_parser_prod___AClassdef___init_aclassdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-    val_t variable9;
-    val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  variable6 =  param6;
-  variable7 =  param7;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i]) return;
-  ((parser_prod___AClassdef___empty_init_t)CALL( self,COLOR_parser_prod___AClassdef___empty_init))( self, init_table /*YYY*/) /*AClassdef::empty_init*/;
-  ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/ =  variable3 /*n_classkind*/;
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_classkind*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_classkind*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_classkind*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_classkind*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_classkind*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_classkind*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_classkind*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_classkind*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/ =  variable4 /*n_id*/;
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable8 = NEW_List_list___List___init(); /*new List[PFormaldef]*/
-  ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable5 /*n_formaldefs*/,COLOR_abstract_collection___Collection___iterator))( variable5 /*n_formaldefs*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable9 = ((array___ArrayIterator___is_ok_t)CALL(variable8,COLOR_abstract_collection___Iterator___is_ok))(variable8) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable9)) break; /*for*/
-    variable9 = ((array___ArrayIterator___item_t)CALL(variable8,COLOR_abstract_collection___Iterator___item))(variable8) /*ArrayIterator::item*/;
-    variable10 = TAG_Bool(( variable9 /*n*/==NIT_NULL) || VAL_ISA( variable9 /*n*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-    if (!UNTAG_Bool(variable10)) { 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);}
-    variable10 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable10,COLOR_abstract_collection___SimpleCollection___add))(variable10,  variable9 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PNode::parent=*/;
-    continue_79: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  break_79: while(0);
-  variable8 = NEW_List_list___List___init(); /*new List[PSuperclass]*/
-  ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable6 /*n_superclasses*/,COLOR_abstract_collection___Collection___iterator))( variable6 /*n_superclasses*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable9 = ((array___ArrayIterator___is_ok_t)CALL(variable8,COLOR_abstract_collection___Iterator___is_ok))(variable8) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable9)) break; /*for*/
-    variable9 = ((array___ArrayIterator___item_t)CALL(variable8,COLOR_abstract_collection___Iterator___item))(variable8) /*ArrayIterator::item*/;
-    variable10 = TAG_Bool(( variable9 /*n*/==NIT_NULL) || VAL_ISA( variable9 /*n*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-    if (!UNTAG_Bool(variable10)) { 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);}
-    variable10 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable10,COLOR_abstract_collection___SimpleCollection___add))(variable10,  variable9 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PNode::parent=*/;
-    continue_80: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
-  }
-  break_80: while(0);
-  variable8 = NEW_List_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/ = variable8;
-  variable8 = ((array___AbstractArray___iterator_t)CALL( variable7 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable7 /*n_propdefs*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable9 = ((array___ArrayIterator___is_ok_t)CALL(variable8,COLOR_abstract_collection___Iterator___is_ok))(variable8) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable9)) break; /*for*/
-    variable9 = ((array___ArrayIterator___item_t)CALL(variable8,COLOR_abstract_collection___Iterator___item))(variable8) /*ArrayIterator::item*/;
-    variable10 = TAG_Bool(( variable9 /*n*/==NIT_NULL) || VAL_ISA( variable9 /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-    if (!UNTAG_Bool(variable10)) { 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);}
-    variable10 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable10,COLOR_abstract_collection___SimpleCollection___add))(variable10,  variable9 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable9 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable9 /*n*/,  self) /*PNode::parent=*/;
-    continue_81: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*ArrayIterator::next*/;
-  }
-  break_81: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
+  return_label76: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 805, LOCATE_parser_prod___AClassdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label82;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label82;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label82;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label82;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label82;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AClassdef____n_doc(variable[4]) /*AClassdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClassdef____n_doc(variable[4]) /*AClassdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label77;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AClassdef____n_kwredef(variable[4]) /*AClassdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClassdef____n_kwredef(variable[4]) /*AClassdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label77;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AClassdef____n_visibility(variable[4]) /*AClassdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClassdef____n_visibility(variable[4]) /*AClassdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label77;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AClassdef____n_classkind(variable[4]) /*AClassdef::_n_classkind*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClassdef____n_classkind(variable[4]) /*AClassdef::_n_classkind*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label77;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AClassdef____n_id(variable[4]) /*AClassdef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClassdef____n_id(variable[4]) /*AClassdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label77;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label82;
-    }
-    continue_83: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_83: while(0);
-  variable2 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+      goto return_label77;
+    }
+    continue_78: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label82;
+      goto return_label77;
     }
-    continue_84: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_79: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_84: while(0);
-  variable2 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label82;
+      goto return_label77;
     }
-    continue_85: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_80: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_85: while(0);
-  return_label82: while(false);
+  break_80: while(0);
+  return_label77: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 896, LOCATE_parser_prod___AClassdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_87: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_87: while(0);
-  variable1 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_82: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_88: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_83: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_88: while(0);
-  variable1 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_89: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_84: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_89: while(0);
+  break_84: while(0);
+  return_label81: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 924, LOCATE_parser_prod___AClassdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_doc( self) /*AClassdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_kwredef( self) /*AClassdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_visibility( self) /*AClassdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_classkind( self) /*AClassdef::_n_classkind*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AClassdef____n_id( self) /*AClassdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_formaldefs( self) /*AClassdef::_n_formaldefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_91: while(0);
-  }
-  break_91: while(0);
-  variable2 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_86: while(0);
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_superclasses( self) /*AClassdef::_n_superclasses*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_92: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_87: while(0);
   }
-  break_92: while(0);
-  variable2 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AClassdef____n_propdefs( self) /*AClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_93: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_88: while(0);
   }
-  break_93: while(0);
+  break_88: while(0);
+  return_label85: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATopClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 966, LOCATE_parser_prod___ATopClassdef___empty_init};
+void parser_prod___AClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 751, LOCATE_parser_prod___AClassdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i]) return;
+  return_label89: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATopClassdef___init_atopclassdef(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 968, LOCATE_parser_prod___ATopClassdef___init_atopclassdef};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
-  ((parser_prod___ATopClassdef___empty_init_t)CALL( self,COLOR_parser_prod___ATopClassdef___empty_init))( self, init_table /*YYY*/) /*ATopClassdef::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_propdefs*/) /*AbstractArray::iterator*/;
+void parser_prod___AClassdef___init_aclassdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, val_t  param7, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 753, LOCATE_parser_prod___AClassdef___init_aclassdef};
+  val_t variable[14];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  variable[7] =  param6;
+  variable[8] =  param7;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-    if (!UNTAG_Bool(variable3)) { 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);}
-    variable3 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_96: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_96: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
+    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_91: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(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*/;
+  while (true) { /*for*/
+    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_92: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(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*/;
+  while (true) { /*for*/
+    variable[11] = ((array___ArrayIterator___is_ok_t)CALL(variable[10],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_93: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[10],COLOR_abstract_collection___Iterator___next))(variable[10]) /*ArrayIterator::next*/;
+  }
+  break_93: while(0);
+  return_label90: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 981, LOCATE_parser_prod___ATopClassdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label97;
+      goto return_label94;
     }
-    continue_98: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_95: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_98: while(0);
-  return_label97: while(false);
+  break_95: while(0);
+  return_label94: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 998, LOCATE_parser_prod___ATopClassdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  variable[0] =  self;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_100: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_97: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_100: while(0);
+  break_97: while(0);
+  return_label96: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATopClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1005, LOCATE_parser_prod___ATopClassdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  variable[0] =  self;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ATopClassdef____n_propdefs( self) /*ATopClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_102: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_99: while(0);
   }
-  break_102: while(0);
+  break_99: while(0);
+  return_label98: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainClassdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1018, LOCATE_parser_prod___AMainClassdef___empty_init};
+void parser_prod___ATopClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 966, LOCATE_parser_prod___ATopClassdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i]) return;
+  return_label100: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainClassdef___init_amainclassdef(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1020, LOCATE_parser_prod___AMainClassdef___init_amainclassdef};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+void parser_prod___ATopClassdef___init_atopclassdef(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 968, LOCATE_parser_prod___ATopClassdef___init_atopclassdef};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
-  ((parser_prod___AMainClassdef___empty_init_t)CALL( self,COLOR_parser_prod___AMainClassdef___empty_init))( self, init_table /*YYY*/) /*AMainClassdef::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[PPropdef]*/
-  ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_propdefs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_propdefs*/) /*AbstractArray::iterator*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-    if (!UNTAG_Bool(variable3)) { 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);}
-    variable3 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_105: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_105: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_102: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_102: while(0);
+  return_label101: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATopClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1033, LOCATE_parser_prod___AMainClassdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-        if (!UNTAG_Bool(variable4)) { 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);}
-        variable4 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label106;
+      goto return_label103;
     }
-    continue_107: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_104: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_107: while(0);
-  return_label106: while(false);
+  break_104: while(0);
+  return_label103: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1050, LOCATE_parser_prod___AMainClassdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  variable[0] =  self;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_109: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_106: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_109: while(0);
+  break_106: while(0);
+  return_label105: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainClassdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1057, LOCATE_parser_prod___AMainClassdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  variable[0] =  self;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AMainClassdef____n_propdefs( self) /*AMainClassdef::_n_propdefs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_111: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_108: while(0);
   }
-  break_111: while(0);
+  break_108: while(0);
+  return_label107: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1069, LOCATE_parser_prod___AConcreteClasskind___n_kwclass__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMainClassdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1018, LOCATE_parser_prod___AMainClassdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i]) return;
+  return_label109: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1077, LOCATE_parser_prod___AConcreteClasskind___empty_init};
+void parser_prod___AMainClassdef___init_amainclassdef(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1020, LOCATE_parser_prod___AMainClassdef___init_amainclassdef};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_111: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_111: while(0);
+  return_label110: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainClassdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1079, LOCATE_parser_prod___AConcreteClasskind___init_aconcreteclasskind};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1069, LOCATE_parser_prod___AConcreteClasskind___n_kwclass__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
-  ((parser_prod___AConcreteClasskind___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteClasskind___empty_init))( self, init_table /*YYY*/) /*AConcreteClasskind::empty_init*/;
-  ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  variable0 /*n_kwclass*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwclass*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwclass*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwclass*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwclass*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwclass*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
+  return_label112: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1090, LOCATE_parser_prod___AConcreteClasskind___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[4]) /*AConcreteClasskind::_n_kwclass*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteClasskind____n_kwclass(variable[4]) /*AConcreteClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
     }
-    goto return_label115;
+    goto return_label113;
   }
-  return_label115: while(false);
+  return_label113: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1105, LOCATE_parser_prod___AConcreteClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label114: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteClasskind___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1112, LOCATE_parser_prod___AConcreteClasskind___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteClasskind____n_kwclass( self) /*AConcreteClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label115: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1120, LOCATE_parser_prod___AAbstractClasskind___n_kwabstract__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1077, LOCATE_parser_prod___AConcreteClasskind___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i]) return;
+  return_label116: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1127, LOCATE_parser_prod___AAbstractClasskind___n_kwclass__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1079, LOCATE_parser_prod___AConcreteClasskind___init_aconcreteclasskind};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label117: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1135, LOCATE_parser_prod___AAbstractClasskind___empty_init};
+void parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1120, LOCATE_parser_prod___AAbstractClasskind___n_kwabstract__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label118: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1137, LOCATE_parser_prod___AAbstractClasskind___init_aabstractclasskind};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AAbstractClasskind___n_kwclass__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1127, LOCATE_parser_prod___AAbstractClasskind___n_kwclass__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
-  ((parser_prod___AAbstractClasskind___empty_init_t)CALL( self,COLOR_parser_prod___AAbstractClasskind___empty_init))( self, init_table /*YYY*/) /*AAbstractClasskind::empty_init*/;
-  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/ =  variable0 /*n_kwabstract*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwabstract*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwabstract*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwabstract*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwabstract*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwabstract*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwabstract*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwabstract*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwabstract*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/ =  variable1 /*n_kwclass*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwclass*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwclass*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwclass*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwclass*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwclass*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwclass*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwclass*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwclass*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
+  return_label119: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1153, LOCATE_parser_prod___AAbstractClasskind___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label122;
-  }
-  variable2 = ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label122;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[4]) /*AAbstractClasskind::_n_kwabstract*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(variable[4]) /*AAbstractClasskind::_n_kwabstract*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label120;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[4]) /*AAbstractClasskind::_n_kwclass*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAbstractClasskind____n_kwclass(variable[4]) /*AAbstractClasskind::_n_kwclass*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label120;
   }
-  return_label122: while(false);
+  return_label120: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1178, LOCATE_parser_prod___AAbstractClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label121: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbstractClasskind___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1188, LOCATE_parser_prod___AAbstractClasskind___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwabstract( self) /*AAbstractClasskind::_n_kwabstract*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbstractClasskind____n_kwclass( self) /*AAbstractClasskind::_n_kwclass*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label122: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1199, LOCATE_parser_prod___AInterfaceClasskind___n_kwinterface__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAbstractClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1135, LOCATE_parser_prod___AAbstractClasskind___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i]) return;
+  return_label123: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1207, LOCATE_parser_prod___AInterfaceClasskind___empty_init};
+void parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1137, LOCATE_parser_prod___AAbstractClasskind___init_aabstractclasskind};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label124: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbstractClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1209, LOCATE_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1199, LOCATE_parser_prod___AInterfaceClasskind___n_kwinterface__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
-  ((parser_prod___AInterfaceClasskind___empty_init_t)CALL( self,COLOR_parser_prod___AInterfaceClasskind___empty_init))( self, init_table /*YYY*/) /*AInterfaceClasskind::empty_init*/;
-  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  variable0 /*n_kwinterface*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwinterface*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwinterface*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwinterface*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwinterface*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwinterface*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwinterface*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwinterface*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwinterface*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
+  return_label125: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1220, LOCATE_parser_prod___AInterfaceClasskind___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[4]) /*AInterfaceClasskind::_n_kwinterface*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(variable[4]) /*AInterfaceClasskind::_n_kwinterface*/ =  NIT_NULL /*null*/;
     }
-    goto return_label128;
+    goto return_label126;
   }
-  return_label128: while(false);
+  return_label126: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1235, LOCATE_parser_prod___AInterfaceClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label127: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInterfaceClasskind___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1242, LOCATE_parser_prod___AInterfaceClasskind___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface( self) /*AInterfaceClasskind::_n_kwinterface*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label128: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1250, LOCATE_parser_prod___AUniversalClasskind___n_kwuniversal__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInterfaceClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1207, LOCATE_parser_prod___AInterfaceClasskind___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i]) return;
+  return_label129: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1258, LOCATE_parser_prod___AUniversalClasskind___empty_init};
+void parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1209, LOCATE_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label130: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInterfaceClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1260, LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___n_kwuniversal__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1250, LOCATE_parser_prod___AUniversalClasskind___n_kwuniversal__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
-  ((parser_prod___AUniversalClasskind___empty_init_t)CALL( self,COLOR_parser_prod___AUniversalClasskind___empty_init))( self, init_table /*YYY*/) /*AUniversalClasskind::empty_init*/;
-  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  variable0 /*n_kwuniversal*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwuniversal*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwuniversal*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwuniversal*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwuniversal*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwuniversal*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwuniversal*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwuniversal*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwuniversal*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
+  return_label131: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1271, LOCATE_parser_prod___AUniversalClasskind___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  variable1 /*new_child*/;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[4]) /*AUniversalClasskind::_n_kwuniversal*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(variable[4]) /*AUniversalClasskind::_n_kwuniversal*/ =  NIT_NULL /*null*/;
     }
-    goto return_label134;
+    goto return_label132;
   }
-  return_label134: while(false);
+  return_label132: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1286, LOCATE_parser_prod___AUniversalClasskind___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label133: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUniversalClasskind___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1293, LOCATE_parser_prod___AUniversalClasskind___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal( self) /*AUniversalClasskind::_n_kwuniversal*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label134: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1301, LOCATE_parser_prod___AFormaldef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1258, LOCATE_parser_prod___AUniversalClasskind___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i]) return;
+  return_label135: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1308, LOCATE_parser_prod___AFormaldef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1260, LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label136: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUniversalClasskind].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1316, LOCATE_parser_prod___AFormaldef___empty_init};
+void parser_prod___AFormaldef___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1301, LOCATE_parser_prod___AFormaldef___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label137: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFormaldef___init_aformaldef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1318, LOCATE_parser_prod___AFormaldef___init_aformaldef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AFormaldef___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1308, LOCATE_parser_prod___AFormaldef___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i]) return;
-  ((parser_prod___AFormaldef___empty_init_t)CALL( self,COLOR_parser_prod___AFormaldef___empty_init))( self, init_table /*YYY*/) /*AFormaldef::empty_init*/;
-  ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/ =  variable0 /*n_id*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/ =  variable1 /*n_type*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
+  return_label138: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1334, LOCATE_parser_prod___AFormaldef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label141;
-  }
-  variable2 = ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label141;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AFormaldef____n_id(variable[4]) /*AFormaldef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFormaldef____n_id(variable[4]) /*AFormaldef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label139;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AFormaldef____n_type(variable[4]) /*AFormaldef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFormaldef____n_type(variable[4]) /*AFormaldef::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label139;
   }
-  return_label141: while(false);
+  return_label139: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1359, LOCATE_parser_prod___AFormaldef___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label140: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFormaldef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1369, LOCATE_parser_prod___AFormaldef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFormaldef____n_id( self) /*AFormaldef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFormaldef____n_type( self) /*AFormaldef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label141: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1380, LOCATE_parser_prod___ASuperclass___n_kwspecial__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFormaldef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1316, LOCATE_parser_prod___AFormaldef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i]) return;
+  return_label142: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1387, LOCATE_parser_prod___ASuperclass___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFormaldef___init_aformaldef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1318, LOCATE_parser_prod___AFormaldef___init_aformaldef};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label143: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFormaldef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1395, LOCATE_parser_prod___ASuperclass___empty_init};
+void parser_prod___ASuperclass___n_kwspecial__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1380, LOCATE_parser_prod___ASuperclass___n_kwspecial__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label144: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperclass___init_asuperclass(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1397, LOCATE_parser_prod___ASuperclass___init_asuperclass};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ASuperclass___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1387, LOCATE_parser_prod___ASuperclass___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i]) return;
-  ((parser_prod___ASuperclass___empty_init_t)CALL( self,COLOR_parser_prod___ASuperclass___empty_init))( self, init_table /*YYY*/) /*ASuperclass::empty_init*/;
-  ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/ =  variable0 /*n_kwspecial*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwspecial*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwspecial*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwspecial*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwspecial*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwspecial*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwspecial*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwspecial*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwspecial*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/ =  variable1 /*n_type*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
+  return_label145: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1413, LOCATE_parser_prod___ASuperclass___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label148;
-  }
-  variable2 = ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label148;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[4]) /*ASuperclass::_n_kwspecial*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperclass____n_kwspecial(variable[4]) /*ASuperclass::_n_kwspecial*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label146;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ASuperclass____n_type(variable[4]) /*ASuperclass::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperclass____n_type(variable[4]) /*ASuperclass::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label146;
   }
-  return_label148: while(false);
+  return_label146: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1438, LOCATE_parser_prod___ASuperclass___visit_all};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label147: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperclass___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1448, LOCATE_parser_prod___ASuperclass___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperclass____n_kwspecial( self) /*ASuperclass::_n_kwspecial*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperclass____n_type( self) /*ASuperclass::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label148: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1459, LOCATE_parser_prod___AAttrPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperclass___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1395, LOCATE_parser_prod___ASuperclass___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i]) return;
+  return_label149: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1466, LOCATE_parser_prod___AAttrPropdef___n_readable__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperclass___init_asuperclass(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1397, LOCATE_parser_prod___ASuperclass___init_asuperclass};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label150: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperclass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1473, LOCATE_parser_prod___AAttrPropdef___n_writable__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrPropdef___n_doc__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1459, LOCATE_parser_prod___AAttrPropdef___n_doc__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label151: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1480, LOCATE_parser_prod___AAttrPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label152: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1487, LOCATE_parser_prod___AAttrPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label153: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_kwattr__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1494, LOCATE_parser_prod___AAttrPropdef___n_kwattr__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label154: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_id__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1501, LOCATE_parser_prod___AAttrPropdef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label155: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___n_type__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1508, LOCATE_parser_prod___AAttrPropdef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label156: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1515, LOCATE_parser_prod___AAttrPropdef___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrPropdef___n_readable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1466, LOCATE_parser_prod___AAttrPropdef___n_readable__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label157: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1523, LOCATE_parser_prod___AAttrPropdef___empty_init};
+void parser_prod___AAttrPropdef___n_writable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1473, LOCATE_parser_prod___AAttrPropdef___n_writable__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label158: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrPropdef___init_aattrpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, val_t  param7, val_t  param8, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1525, LOCATE_parser_prod___AAttrPropdef___init_aattrpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  variable6 =  param6;
-  variable7 =  param7;
-  variable8 =  param8;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
-  ((parser_prod___AAttrPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AAttrPropdef___empty_init))( self, init_table /*YYY*/) /*AAttrPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/ =  variable1 /*n_readable*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_readable*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_readable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_readable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_readable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_readable*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_readable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_readable*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_readable*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/ =  variable2 /*n_writable*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_writable*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_writable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_writable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_writable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_writable*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_writable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_writable*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_writable*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/ =  variable3 /*n_kwredef*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/ =  variable4 /*n_visibility*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/ =  variable5 /*n_kwattr*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_kwattr*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_kwattr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_kwattr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_kwattr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_kwattr*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_kwattr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_kwattr*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_kwattr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/ =  variable6 /*n_id*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable6 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable6 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/ =  variable7 /*n_type*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable7 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable7 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable7 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable7 /*n_type*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/ =  variable8 /*n_expr*/;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable8 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable8 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable9)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable8 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable8 /*n_expr*/,  self) /*PNode::parent=*/;
+void parser_prod___AAttrPropdef___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1515, LOCATE_parser_prod___AAttrPropdef___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
+  return_label159: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1576, LOCATE_parser_prod___AAttrPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAble, ID_PAble)) /*cast PAble*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
-  }
-  variable2 = ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label162;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_readable(variable[4]) /*AAttrPropdef::_n_readable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_readable(variable[4]) /*AAttrPropdef::_n_readable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_writable(variable[4]) /*AAttrPropdef::_n_writable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_writable(variable[4]) /*AAttrPropdef::_n_writable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[4]) /*AAttrPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_kwredef(variable[4]) /*AAttrPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[4]) /*AAttrPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_visibility(variable[4]) /*AAttrPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[4]) /*AAttrPropdef::_n_kwattr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_kwattr(variable[4]) /*AAttrPropdef::_n_kwattr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_id(variable[4]) /*AAttrPropdef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_id(variable[4]) /*AAttrPropdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_type(variable[4]) /*AAttrPropdef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_type(variable[4]) /*AAttrPropdef::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAttrPropdef____n_expr(variable[4]) /*AAttrPropdef::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrPropdef____n_expr(variable[4]) /*AAttrPropdef::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label160;
   }
-  return_label162: while(false);
+  return_label160: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1671, LOCATE_parser_prod___AAttrPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label161: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1702, LOCATE_parser_prod___AAttrPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_readable( self) /*AAttrPropdef::_n_readable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_writable( self) /*AAttrPropdef::_n_writable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwredef( self) /*AAttrPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_visibility( self) /*AAttrPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_kwattr( self) /*AAttrPropdef::_n_kwattr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_id( self) /*AAttrPropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_type( self) /*AAttrPropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrPropdef____n_expr( self) /*AAttrPropdef::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label162: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1523, LOCATE_parser_prod___AAttrPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i]) return;
+  return_label163: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AAttrPropdef___init_aattrpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, val_t  param7, val_t  param8, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1525, LOCATE_parser_prod___AAttrPropdef___init_aattrpropdef};
+  val_t variable[12];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  variable[7] =  param6;
+  variable[8] =  param7;
+  variable[9] =  param8;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label164: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1734, LOCATE_parser_prod___AMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label165: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1741, LOCATE_parser_prod___AMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label166: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1748, LOCATE_parser_prod___AMethPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label167: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1755, LOCATE_parser_prod___AMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label168: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1762, LOCATE_parser_prod___AMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label169: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1770, LOCATE_parser_prod___AMethPropdef___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
+void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 1803, LOCATE_parser_prod___AMethPropdef___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label170;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label170;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label170;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label170;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label170;
+  }
+  return_label170: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___init_amethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1772, LOCATE_parser_prod___AMethPropdef___init_amethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
-  ((parser_prod___AMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMethPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable3 /*n_methid*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable4 /*n_signature*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_signature*/,  self) /*PNode::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
+void parser_prod___AMethPropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1858, LOCATE_parser_prod___AMethPropdef___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label171: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 1803, LOCATE_parser_prod___AMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label172;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label172;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label172;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label172;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label172;
+void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1877, LOCATE_parser_prod___AMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
   return_label172: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1858, LOCATE_parser_prod___AMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1770, LOCATE_parser_prod___AMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i]) return;
+  return_label173: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1877, LOCATE_parser_prod___AMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMethPropdef___init_amethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1772, LOCATE_parser_prod___AMethPropdef___init_amethpropdef};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label174: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1897, LOCATE_parser_prod___ADeferredMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label175: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1904, LOCATE_parser_prod___ADeferredMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label176: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1911, LOCATE_parser_prod___ADeferredMethPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1918, LOCATE_parser_prod___ADeferredMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label177: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1925, LOCATE_parser_prod___ADeferredMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label178: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 1932, LOCATE_parser_prod___ADeferredMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label179: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADeferredMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1940, LOCATE_parser_prod___ADeferredMethPropdef___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
+void parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 1918, LOCATE_parser_prod___ADeferredMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
-  ((parser_prod___AMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1942, LOCATE_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
-  ((parser_prod___ADeferredMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___ADeferredMethPropdef___empty_init))( self, init_table /*YYY*/) /*ADeferredMethPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable3 /*n_kwmeth*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwmeth*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable4 /*n_methid*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable5 /*n_signature*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_signature*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
+  return_label180: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 1978, LOCATE_parser_prod___ADeferredMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
-  }
-  variable2 = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label183;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[4]) /*ADeferredMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(variable[4]) /*ADeferredMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label181;
   }
-  return_label183: while(false);
+  return_label181: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2043, LOCATE_parser_prod___ADeferredMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label182: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADeferredMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2065, LOCATE_parser_prod___ADeferredMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label183: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1940, LOCATE_parser_prod___ADeferredMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth( self) /*ADeferredMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i]) return;
+  return_label184: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 1942, LOCATE_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef};
+  val_t variable[9];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label185: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADeferredMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2088, LOCATE_parser_prod___AInternMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label186: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2095, LOCATE_parser_prod___AInternMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label187: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2102, LOCATE_parser_prod___AInternMethPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2109, LOCATE_parser_prod___AInternMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label188: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2116, LOCATE_parser_prod___AInternMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label189: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2123, LOCATE_parser_prod___AInternMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label190: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2131, LOCATE_parser_prod___AInternMethPropdef___empty_init};
+void parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2109, LOCATE_parser_prod___AInternMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
-  ((parser_prod___AMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2133, LOCATE_parser_prod___AInternMethPropdef___init_ainternmethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
-  ((parser_prod___AInternMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AInternMethPropdef___empty_init))( self, init_table /*YYY*/) /*AInternMethPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/ =  variable3 /*n_kwmeth*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwmeth*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable4 /*n_methid*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable5 /*n_signature*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_signature*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
+  return_label191: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 2169, LOCATE_parser_prod___AInternMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
-  }
-  variable2 = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label194;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[4]) /*AInternMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(variable[4]) /*AInternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label192;
   }
-  return_label194: while(false);
+  return_label192: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2234, LOCATE_parser_prod___AInternMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label193: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2256, LOCATE_parser_prod___AInternMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label194: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AInternMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2131, LOCATE_parser_prod___AInternMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInternMethPropdef____n_kwmeth( self) /*AInternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i]) return;
+  return_label195: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2133, LOCATE_parser_prod___AInternMethPropdef___init_ainternmethpropdef};
+  val_t variable[9];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label196: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInternMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2279, LOCATE_parser_prod___AExternMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label197: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2286, LOCATE_parser_prod___AExternMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label198: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2293, LOCATE_parser_prod___AExternMethPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2300, LOCATE_parser_prod___AExternMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label199: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2307, LOCATE_parser_prod___AExternMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label200: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2314, LOCATE_parser_prod___AExternMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label201: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AExternMethPropdef___n_extern__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2321, LOCATE_parser_prod___AExternMethPropdef___n_extern__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2300, LOCATE_parser_prod___AExternMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label202: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AExternMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2329, LOCATE_parser_prod___AExternMethPropdef___empty_init};
+void parser_prod___AExternMethPropdef___n_extern__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2321, LOCATE_parser_prod___AExternMethPropdef___n_extern__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
-  ((parser_prod___AMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2331, LOCATE_parser_prod___AExternMethPropdef___init_aexternmethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  variable6 =  param6;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
-  ((parser_prod___AExternMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AExternMethPropdef___empty_init))( self, init_table /*YYY*/) /*AExternMethPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/ =  variable3 /*n_kwmeth*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwmeth*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable4 /*n_methid*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable5 /*n_signature*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_signature*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/ =  variable6 /*n_extern*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*n_extern*/ ==  NIT_NULL /*null*/) || (( variable6 /*n_extern*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*n_extern*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*n_extern*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*n_extern*/,COLOR_kernel___Object_____eqeq))( variable6 /*n_extern*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n_extern*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n_extern*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
+  return_label203: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 2372, LOCATE_parser_prod___AExternMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
-  }
-  variable2 = ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label206;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[4]) /*AExternMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(variable[4]) /*AExternMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[4]) /*AExternMethPropdef::_n_extern*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AExternMethPropdef____n_extern(variable[4]) /*AExternMethPropdef::_n_extern*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label204;
   }
-  return_label206: while(false);
+  return_label204: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2447, LOCATE_parser_prod___AExternMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label205: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AExternMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2472, LOCATE_parser_prod___AExternMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label206: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AExternMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2329, LOCATE_parser_prod___AExternMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AExternMethPropdef____n_kwmeth( self) /*AExternMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AExternMethPropdef____n_extern( self) /*AExternMethPropdef::_n_extern*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i]) return;
+  return_label207: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2331, LOCATE_parser_prod___AExternMethPropdef___init_aexternmethpropdef};
+  val_t variable[10];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label208: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AExternMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2498, LOCATE_parser_prod___AConcreteMethPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label209: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2505, LOCATE_parser_prod___AConcreteMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label210: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2512, LOCATE_parser_prod___AConcreteMethPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2519, LOCATE_parser_prod___AConcreteMethPropdef___n_kwmeth__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label211: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2526, LOCATE_parser_prod___AConcreteMethPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label212: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2533, LOCATE_parser_prod___AConcreteMethPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label213: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2540, LOCATE_parser_prod___AConcreteMethPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2519, LOCATE_parser_prod___AConcreteMethPropdef___n_kwmeth__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label214: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2548, LOCATE_parser_prod___AConcreteMethPropdef___empty_init};
+void parser_prod___AConcreteMethPropdef___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2540, LOCATE_parser_prod___AConcreteMethPropdef___n_block__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
-  ((parser_prod___AMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2550, LOCATE_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  variable6 =  param6;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
-  ((parser_prod___AConcreteMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteMethPropdef___empty_init))( self, init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable3 /*n_kwmeth*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwmeth*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwmeth*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwmeth*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwmeth*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwmeth*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwmeth*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwmeth*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable4 /*n_methid*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable5 /*n_signature*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_signature*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable6 /*n_block*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable6 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable6 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n_block*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
+  return_label215: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 2591, LOCATE_parser_prod___AConcreteMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label218;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[4]) /*AConcreteMethPropdef::_n_kwmeth*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(variable[4]) /*AConcreteMethPropdef::_n_kwmeth*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label216;
   }
-  return_label218: while(false);
+  return_label216: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2666, LOCATE_parser_prod___AConcreteMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label217: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2691, LOCATE_parser_prod___AConcreteMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label218: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2548, LOCATE_parser_prod___AConcreteMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth( self) /*AConcreteMethPropdef::_n_kwmeth*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i]) return;
+  return_label219: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2550, LOCATE_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef};
+  val_t variable[10];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label220: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2717, LOCATE_parser_prod___AConcreteInitPropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label221: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2724, LOCATE_parser_prod___AConcreteInitPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label222: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2731, LOCATE_parser_prod___AConcreteInitPropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2738, LOCATE_parser_prod___AConcreteInitPropdef___n_kwinit__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label223: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_methid__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2745, LOCATE_parser_prod___AConcreteInitPropdef___n_methid__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label224: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_signature__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2752, LOCATE_parser_prod___AConcreteInitPropdef___n_signature__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label225: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___n_block__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2759, LOCATE_parser_prod___AConcreteInitPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label226: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AConcreteInitPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2767, LOCATE_parser_prod___AConcreteInitPropdef___empty_init};
+void parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2738, LOCATE_parser_prod___AConcreteInitPropdef___n_kwinit__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
-  ((parser_prod___AConcreteMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteMethPropdef___empty_init))( self, init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2769, LOCATE_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
-  variable6 =  param6;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
-  ((parser_prod___AConcreteInitPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteInitPropdef___empty_init))( self, init_table /*YYY*/) /*AConcreteInitPropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/ =  variable3 /*n_kwinit*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwinit*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwinit*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwinit*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwinit*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwinit*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable4 /*n_methid*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_methid*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_methid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_methid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_methid*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_methid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_methid*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_methid*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable5 /*n_signature*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_signature*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_signature*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_signature*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_signature*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_signature*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_signature*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable6 /*n_block*/;
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable6 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable6 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable7)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n_block*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
+  return_label227: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
   struct trace_t trace = {NULL, NULL, 2810, LOCATE_parser_prod___AConcreteInitPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label230;
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_visibility(variable[4]) /*AMethPropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[4]) /*AConcreteInitPropdef::_n_kwinit*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(variable[4]) /*AConcreteInitPropdef::_n_kwinit*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_methid(variable[4]) /*AMethPropdef::_n_methid*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_signature(variable[4]) /*AMethPropdef::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label228;
   }
-  return_label230: while(false);
+  return_label228: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___visit_all(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2885, LOCATE_parser_prod___AConcreteInitPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label229: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AConcreteInitPropdef___visit_all_reverse(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2910, LOCATE_parser_prod___AConcreteInitPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label230: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2767, LOCATE_parser_prod___AConcreteInitPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_visibility( self) /*AMethPropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit( self) /*AConcreteInitPropdef::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_methid( self) /*AMethPropdef::_n_methid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_signature( self) /*AMethPropdef::_n_signature*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i]) return;
+  return_label231: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, val_t  param6, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2769, LOCATE_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef};
+  val_t variable[10];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
+  variable[7] =  param6;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label232: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AConcreteInitPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainMethPropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2936, LOCATE_parser_prod___AMainMethPropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label233: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMainMethPropdef___n_block__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 2943, LOCATE_parser_prod___AMainMethPropdef___n_block__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label234: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2951, LOCATE_parser_prod___AMainMethPropdef___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
-  ((parser_prod___AConcreteMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AConcreteMethPropdef___empty_init))( self, init_table /*YYY*/) /*AConcreteMethPropdef::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
+void parser_prod___AMainMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 2969, LOCATE_parser_prod___AMainMethPropdef___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMethPropdef____n_kwredef(variable[4]) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label235;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AConcreteMethPropdef____n_block(variable[4]) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label235;
+  }
+  return_label235: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2953, LOCATE_parser_prod___AMainMethPropdef___init_amainmethpropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AMainMethPropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 2994, LOCATE_parser_prod___AMainMethPropdef___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
-  ((parser_prod___AMainMethPropdef___empty_init_t)CALL( self,COLOR_parser_prod___AMainMethPropdef___empty_init))( self, init_table /*YYY*/) /*AMainMethPropdef::empty_init*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable0 /*n_kwredef*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwredef*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable1 /*n_block*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_block*/,  self) /*PNode::parent=*/;
+  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::==*/)))))));
+  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*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
+  return_label236: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 2969, LOCATE_parser_prod___AMainMethPropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label237;
-  }
-  variable2 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label237;
+void parser_prod___AMainMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3004, LOCATE_parser_prod___AMainMethPropdef___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
   return_label237: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2994, LOCATE_parser_prod___AMainMethPropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMainMethPropdef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2951, LOCATE_parser_prod___AMainMethPropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i]) return;
+  return_label238: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMainMethPropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3004, LOCATE_parser_prod___AMainMethPropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 2953, LOCATE_parser_prod___AMainMethPropdef___init_amainmethpropdef};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMethPropdef____n_kwredef( self) /*AMethPropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AConcreteMethPropdef____n_block( self) /*AConcreteMethPropdef::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label239: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMainMethPropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_doc__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3015, LOCATE_parser_prod___ATypePropdef___n_doc__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label240: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_kwredef__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3022, LOCATE_parser_prod___ATypePropdef___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label241: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_visibility__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3029, LOCATE_parser_prod___ATypePropdef___n_visibility__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label242: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_kwtype__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3036, LOCATE_parser_prod___ATypePropdef___n_kwtype__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label243: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_id__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3043, LOCATE_parser_prod___ATypePropdef___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label244: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___n_type__eq(val_t  self, val_t  param0) {
   struct trace_t trace = {NULL, NULL, 3050, LOCATE_parser_prod___ATypePropdef___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label245: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3096, LOCATE_parser_prod___ATypePropdef___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PPropdef____n_doc(variable[4]) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[4]) /*ATypePropdef::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATypePropdef____n_kwredef(variable[4]) /*ATypePropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ATypePropdef____n_visibility(variable[4]) /*ATypePropdef::_n_visibility*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATypePropdef____n_visibility(variable[4]) /*ATypePropdef::_n_visibility*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[4]) /*ATypePropdef::_n_kwtype*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATypePropdef____n_kwtype(variable[4]) /*ATypePropdef::_n_kwtype*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ATypePropdef____n_id(variable[4]) /*ATypePropdef::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATypePropdef____n_id(variable[4]) /*ATypePropdef::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ATypePropdef____n_type(variable[4]) /*ATypePropdef::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATypePropdef____n_type(variable[4]) /*ATypePropdef::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label246;
   }
+  return_label246: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ATypePropdef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3161, LOCATE_parser_prod___ATypePropdef___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label247: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ATypePropdef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3183, LOCATE_parser_prod___ATypePropdef___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label248: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3058, LOCATE_parser_prod___ATypePropdef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
+  return_label249: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATypePropdef___init_atypepropdef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3060, LOCATE_parser_prod___ATypePropdef___init_atypepropdef};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
+  val_t variable[9];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i]) return;
-  ((parser_prod___ATypePropdef___empty_init_t)CALL( self,COLOR_parser_prod___ATypePropdef___empty_init))( self, init_table /*YYY*/) /*ATypePropdef::empty_init*/;
-  ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable0 /*n_doc*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_doc*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_doc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_doc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_doc*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_doc*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_doc*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_doc*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  variable1 /*n_kwredef*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  variable2 /*n_visibility*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_visibility*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_visibility*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_visibility*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_visibility*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_visibility*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_visibility*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_visibility*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  variable3 /*n_kwtype*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_kwtype*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_kwtype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwtype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_kwtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_kwtype*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_kwtype*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_kwtype*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_kwtype*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  variable4 /*n_id*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  variable5 /*n_type*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_type*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label250: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATypePropdef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATypePropdef___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3096, LOCATE_parser_prod___ATypePropdef___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
-  }
-  variable2 = ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
-  }
-  variable2 = ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
-  }
-  variable2 = ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
-  }
-  variable2 = ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
-  }
-  variable2 = ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label248;
+void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3206, LOCATE_parser_prod___AReadAble___n_kwredef__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label248: while(false);
+  return_label251: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATypePropdef___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3161, LOCATE_parser_prod___ATypePropdef___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3213, LOCATE_parser_prod___AReadAble___n_kwreadable__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label252: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATypePropdef___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3183, LOCATE_parser_prod___ATypePropdef___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PPropdef____n_doc( self) /*PPropdef::_n_doc*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_kwredef( self) /*ATypePropdef::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_visibility( self) /*ATypePropdef::_n_visibility*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_kwtype( self) /*ATypePropdef::_n_kwtype*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_id( self) /*ATypePropdef::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATypePropdef____n_type( self) /*ATypePropdef::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AReadAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3239, LOCATE_parser_prod___AReadAble___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label253;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AReadAble____n_kwreadable(variable[4]) /*AReadAble::_n_kwreadable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReadAble____n_kwreadable(variable[4]) /*AReadAble::_n_kwreadable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label253;
   }
+  return_label253: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3206, LOCATE_parser_prod___AReadAble___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReadAble___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3264, LOCATE_parser_prod___AReadAble___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label254: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___n_kwreadable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3213, LOCATE_parser_prod___AReadAble___n_kwreadable__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AReadAble___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3274, LOCATE_parser_prod___AReadAble___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label255: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReadAble___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3221, LOCATE_parser_prod___AReadAble___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
+  return_label256: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReadAble___init_areadable(val_t  self, val_t  param0, val_t  param1, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3223, LOCATE_parser_prod___AReadAble___init_areadable};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i]) return;
-  ((parser_prod___AReadAble___empty_init_t)CALL( self,COLOR_parser_prod___AReadAble___empty_init))( self, init_table /*YYY*/) /*AReadAble::empty_init*/;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable0 /*n_kwredef*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  variable1 /*n_kwreadable*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwreadable*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwreadable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwreadable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwreadable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwreadable*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwreadable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwreadable*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwreadable*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label257: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReadAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3239, LOCATE_parser_prod___AReadAble___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label255;
-  }
-  variable2 = ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label255;
+void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3285, LOCATE_parser_prod___AWriteAble___n_kwredef__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label255: while(false);
+  return_label258: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3264, LOCATE_parser_prod___AReadAble___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3292, LOCATE_parser_prod___AWriteAble___n_kwwritable__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label259: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReadAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3274, LOCATE_parser_prod___AReadAble___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReadAble____n_kwreadable( self) /*AReadAble::_n_kwreadable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AWriteAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3318, LOCATE_parser_prod___AWriteAble___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PAble____n_kwredef(variable[4]) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label260;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[4]) /*AWriteAble::_n_kwwritable*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWriteAble____n_kwwritable(variable[4]) /*AWriteAble::_n_kwwritable*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label260;
   }
+  return_label260: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___n_kwredef__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3285, LOCATE_parser_prod___AWriteAble___n_kwredef__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWriteAble___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3343, LOCATE_parser_prod___AWriteAble___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label261: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___n_kwwritable__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3292, LOCATE_parser_prod___AWriteAble___n_kwwritable__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AWriteAble___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3353, LOCATE_parser_prod___AWriteAble___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label262: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWriteAble___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3300, LOCATE_parser_prod___AWriteAble___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
+  return_label263: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWriteAble___init_awriteable(val_t  self, val_t  param0, val_t  param1, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3302, LOCATE_parser_prod___AWriteAble___init_awriteable};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i]) return;
-  ((parser_prod___AWriteAble___empty_init_t)CALL( self,COLOR_parser_prod___AWriteAble___empty_init))( self, init_table /*YYY*/) /*AWriteAble::empty_init*/;
-  ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable0 /*n_kwredef*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwredef*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwredef*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwredef*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwredef*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwredef*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwredef*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwredef*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/ =  variable1 /*n_kwwritable*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwwritable*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwwritable*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwwritable*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwwritable*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwwritable*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwwritable*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwwritable*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwwritable*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label264: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWriteAble].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3318, LOCATE_parser_prod___AWriteAble___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label262;
-  }
-  variable2 = ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label262;
-  }
-  return_label262: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AWriteAble___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3343, LOCATE_parser_prod___AWriteAble___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3364, LOCATE_parser_prod___AIdMethid___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  variable1 = ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  return_label265: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIdMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3385, LOCATE_parser_prod___AIdMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AIdMethid____n_id(variable[4]) /*AIdMethid::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIdMethid____n_id(variable[4]) /*AIdMethid::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label266;
   }
+  return_label266: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWriteAble___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3353, LOCATE_parser_prod___AWriteAble___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIdMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3400, LOCATE_parser_prod___AIdMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PAble____n_kwredef( self) /*PAble::_n_kwredef*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWriteAble____n_kwwritable( self) /*AWriteAble::_n_kwwritable*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label267: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3364, LOCATE_parser_prod___AIdMethid___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIdMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3407, LOCATE_parser_prod___AIdMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label268: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIdMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3372, LOCATE_parser_prod___AIdMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i]) return;
+  return_label269: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIdMethid___init_aidmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3374, LOCATE_parser_prod___AIdMethid___init_aidmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i]) return;
-  ((parser_prod___AIdMethid___empty_init_t)CALL( self,COLOR_parser_prod___AIdMethid___empty_init))( self, init_table /*YYY*/) /*AIdMethid::empty_init*/;
-  ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/ =  variable0 /*n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label270: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIdMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3385, LOCATE_parser_prod___AIdMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3415, LOCATE_parser_prod___APlusMethid___n_plus__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label268;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label268: while(false);
+  return_label271: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3400, LOCATE_parser_prod___AIdMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___APlusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3436, LOCATE_parser_prod___APlusMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APlusMethid____n_plus(variable[4]) /*APlusMethid::_n_plus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APlusMethid____n_plus(variable[4]) /*APlusMethid::_n_plus*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label272;
   }
+  return_label272: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIdMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3407, LOCATE_parser_prod___AIdMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3451, LOCATE_parser_prod___APlusMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIdMethid____n_id( self) /*AIdMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label273: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___n_plus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3415, LOCATE_parser_prod___APlusMethid___n_plus__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3458, LOCATE_parser_prod___APlusMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label274: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3423, LOCATE_parser_prod___APlusMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i]) return;
+  return_label275: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusMethid___init_aplusmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3425, LOCATE_parser_prod___APlusMethid___init_aplusmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i]) return;
-  ((parser_prod___APlusMethid___empty_init_t)CALL( self,COLOR_parser_prod___APlusMethid___empty_init))( self, init_table /*YYY*/) /*APlusMethid::empty_init*/;
-  ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/ =  variable0 /*n_plus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_plus*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_plus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_plus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_plus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_plus*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_plus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_plus*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_plus*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label276: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3436, LOCATE_parser_prod___APlusMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3466, LOCATE_parser_prod___AMinusMethid___n_minus__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label274;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label274: while(false);
+  return_label277: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3451, LOCATE_parser_prod___APlusMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AMinusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3487, LOCATE_parser_prod___AMinusMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AMinusMethid____n_minus(variable[4]) /*AMinusMethid::_n_minus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMinusMethid____n_minus(variable[4]) /*AMinusMethid::_n_minus*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label278;
   }
+  return_label278: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3458, LOCATE_parser_prod___APlusMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3502, LOCATE_parser_prod___AMinusMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APlusMethid____n_plus( self) /*APlusMethid::_n_plus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label279: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3466, LOCATE_parser_prod___AMinusMethid___n_minus__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3509, LOCATE_parser_prod___AMinusMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label280: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3474, LOCATE_parser_prod___AMinusMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
+  return_label281: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusMethid___init_aminusmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3476, LOCATE_parser_prod___AMinusMethid___init_aminusmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i]) return;
-  ((parser_prod___AMinusMethid___empty_init_t)CALL( self,COLOR_parser_prod___AMinusMethid___empty_init))( self, init_table /*YYY*/) /*AMinusMethid::empty_init*/;
-  ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/ =  variable0 /*n_minus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_minus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_minus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_minus*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_minus*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_minus*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label282: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3487, LOCATE_parser_prod___AMinusMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3517, LOCATE_parser_prod___AStarMethid___n_star__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label280;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label280: while(false);
+  return_label283: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3502, LOCATE_parser_prod___AMinusMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStarMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3538, LOCATE_parser_prod___AStarMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AStarMethid____n_star(variable[4]) /*AStarMethid::_n_star*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStarMethid____n_star(variable[4]) /*AStarMethid::_n_star*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label284;
   }
+  return_label284: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3509, LOCATE_parser_prod___AMinusMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3553, LOCATE_parser_prod___AStarMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMinusMethid____n_minus( self) /*AMinusMethid::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label285: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___n_star__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3517, LOCATE_parser_prod___AStarMethid___n_star__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3560, LOCATE_parser_prod___AStarMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label286: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3525, LOCATE_parser_prod___AStarMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i]) return;
+  return_label287: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarMethid___init_astarmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3527, LOCATE_parser_prod___AStarMethid___init_astarmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i]) return;
-  ((parser_prod___AStarMethid___empty_init_t)CALL( self,COLOR_parser_prod___AStarMethid___empty_init))( self, init_table /*YYY*/) /*AStarMethid::empty_init*/;
-  ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/ =  variable0 /*n_star*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_star*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_star*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_star*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_star*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_star*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_star*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_star*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_star*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label288: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3538, LOCATE_parser_prod___AStarMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3568, LOCATE_parser_prod___ASlashMethid___n_slash__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label286;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label286: while(false);
+  return_label289: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3553, LOCATE_parser_prod___AStarMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ASlashMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3589, LOCATE_parser_prod___ASlashMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ASlashMethid____n_slash(variable[4]) /*ASlashMethid::_n_slash*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASlashMethid____n_slash(variable[4]) /*ASlashMethid::_n_slash*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label290;
   }
+  return_label290: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3560, LOCATE_parser_prod___AStarMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3604, LOCATE_parser_prod___ASlashMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStarMethid____n_star( self) /*AStarMethid::_n_star*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label291: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___n_slash__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3568, LOCATE_parser_prod___ASlashMethid___n_slash__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3611, LOCATE_parser_prod___ASlashMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label292: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3576, LOCATE_parser_prod___ASlashMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
+  return_label293: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashMethid___init_aslashmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3578, LOCATE_parser_prod___ASlashMethid___init_aslashmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i]) return;
-  ((parser_prod___ASlashMethid___empty_init_t)CALL( self,COLOR_parser_prod___ASlashMethid___empty_init))( self, init_table /*YYY*/) /*ASlashMethid::empty_init*/;
-  ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/ =  variable0 /*n_slash*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_slash*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_slash*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_slash*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_slash*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_slash*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_slash*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_slash*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_slash*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label294: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3589, LOCATE_parser_prod___ASlashMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3619, LOCATE_parser_prod___APercentMethid___n_percent__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label292;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label292: while(false);
+  return_label295: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3604, LOCATE_parser_prod___ASlashMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___APercentMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3640, LOCATE_parser_prod___APercentMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___APercentMethid____n_percent(variable[4]) /*APercentMethid::_n_percent*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APercentMethid____n_percent(variable[4]) /*APercentMethid::_n_percent*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label296;
   }
+  return_label296: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3611, LOCATE_parser_prod___ASlashMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3655, LOCATE_parser_prod___APercentMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASlashMethid____n_slash( self) /*ASlashMethid::_n_slash*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label297: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___n_percent__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3619, LOCATE_parser_prod___APercentMethid___n_percent__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3662, LOCATE_parser_prod___APercentMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label298: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3627, LOCATE_parser_prod___APercentMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i]) return;
+  return_label299: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentMethid___init_apercentmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3629, LOCATE_parser_prod___APercentMethid___init_apercentmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i]) return;
-  ((parser_prod___APercentMethid___empty_init_t)CALL( self,COLOR_parser_prod___APercentMethid___empty_init))( self, init_table /*YYY*/) /*APercentMethid::empty_init*/;
-  ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/ =  variable0 /*n_percent*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_percent*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_percent*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_percent*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_percent*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_percent*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_percent*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_percent*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_percent*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label300: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3640, LOCATE_parser_prod___APercentMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3670, LOCATE_parser_prod___AEqMethid___n_eq__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label298;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label298: while(false);
+  return_label301: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3655, LOCATE_parser_prod___APercentMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AEqMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3691, LOCATE_parser_prod___AEqMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AEqMethid____n_eq(variable[4]) /*AEqMethid::_n_eq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEqMethid____n_eq(variable[4]) /*AEqMethid::_n_eq*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label302;
   }
+  return_label302: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3662, LOCATE_parser_prod___APercentMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3706, LOCATE_parser_prod___AEqMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APercentMethid____n_percent( self) /*APercentMethid::_n_percent*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label303: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___n_eq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3670, LOCATE_parser_prod___AEqMethid___n_eq__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3713, LOCATE_parser_prod___AEqMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label304: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3678, LOCATE_parser_prod___AEqMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i]) return;
+  return_label305: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqMethid___init_aeqmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3680, LOCATE_parser_prod___AEqMethid___init_aeqmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i]) return;
-  ((parser_prod___AEqMethid___empty_init_t)CALL( self,COLOR_parser_prod___AEqMethid___empty_init))( self, init_table /*YYY*/) /*AEqMethid::empty_init*/;
-  ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/ =  variable0 /*n_eq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_eq*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_eq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_eq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_eq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_eq*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_eq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_eq*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_eq*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label306: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3691, LOCATE_parser_prod___AEqMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3721, LOCATE_parser_prod___ANeMethid___n_ne__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label304;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label304: while(false);
+  return_label307: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3706, LOCATE_parser_prod___AEqMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ANeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3742, LOCATE_parser_prod___ANeMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ANeMethid____n_ne(variable[4]) /*ANeMethid::_n_ne*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANeMethid____n_ne(variable[4]) /*ANeMethid::_n_ne*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label308;
   }
+  return_label308: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3713, LOCATE_parser_prod___AEqMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3757, LOCATE_parser_prod___ANeMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEqMethid____n_eq( self) /*AEqMethid::_n_eq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label309: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___n_ne__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3721, LOCATE_parser_prod___ANeMethid___n_ne__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3764, LOCATE_parser_prod___ANeMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label310: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3729, LOCATE_parser_prod___ANeMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i]) return;
+  return_label311: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeMethid___init_anemethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3731, LOCATE_parser_prod___ANeMethid___init_anemethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i]) return;
-  ((parser_prod___ANeMethid___empty_init_t)CALL( self,COLOR_parser_prod___ANeMethid___empty_init))( self, init_table /*YYY*/) /*ANeMethid::empty_init*/;
-  ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/ =  variable0 /*n_ne*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_ne*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_ne*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_ne*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_ne*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_ne*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_ne*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_ne*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label312: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3742, LOCATE_parser_prod___ANeMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3772, LOCATE_parser_prod___ALeMethid___n_le__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label310;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label310: while(false);
+  return_label313: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3757, LOCATE_parser_prod___ANeMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ALeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3793, LOCATE_parser_prod___ALeMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ALeMethid____n_le(variable[4]) /*ALeMethid::_n_le*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ALeMethid____n_le(variable[4]) /*ALeMethid::_n_le*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label314;
   }
+  return_label314: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3764, LOCATE_parser_prod___ANeMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3808, LOCATE_parser_prod___ALeMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANeMethid____n_ne( self) /*ANeMethid::_n_ne*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label315: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___n_le__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3772, LOCATE_parser_prod___ALeMethid___n_le__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3815, LOCATE_parser_prod___ALeMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label316: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3780, LOCATE_parser_prod___ALeMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i]) return;
+  return_label317: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeMethid___init_alemethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3782, LOCATE_parser_prod___ALeMethid___init_alemethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i]) return;
-  ((parser_prod___ALeMethid___empty_init_t)CALL( self,COLOR_parser_prod___ALeMethid___empty_init))( self, init_table /*YYY*/) /*ALeMethid::empty_init*/;
-  ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/ =  variable0 /*n_le*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_le*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_le*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_le*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_le*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_le*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_le*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_le*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_le*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label318: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3793, LOCATE_parser_prod___ALeMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3823, LOCATE_parser_prod___AGeMethid___n_ge__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label316;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label316: while(false);
+  return_label319: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3808, LOCATE_parser_prod___ALeMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AGeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3844, LOCATE_parser_prod___AGeMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AGeMethid____n_ge(variable[4]) /*AGeMethid::_n_ge*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AGeMethid____n_ge(variable[4]) /*AGeMethid::_n_ge*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label320;
   }
+  return_label320: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3815, LOCATE_parser_prod___ALeMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3859, LOCATE_parser_prod___AGeMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ALeMethid____n_le( self) /*ALeMethid::_n_le*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label321: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___n_ge__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3823, LOCATE_parser_prod___AGeMethid___n_ge__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3866, LOCATE_parser_prod___AGeMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label322: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3831, LOCATE_parser_prod___AGeMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i]) return;
+  return_label323: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeMethid___init_agemethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3833, LOCATE_parser_prod___AGeMethid___init_agemethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i]) return;
-  ((parser_prod___AGeMethid___empty_init_t)CALL( self,COLOR_parser_prod___AGeMethid___empty_init))( self, init_table /*YYY*/) /*AGeMethid::empty_init*/;
-  ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/ =  variable0 /*n_ge*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_ge*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_ge*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_ge*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_ge*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_ge*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_ge*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_ge*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_ge*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label324: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3844, LOCATE_parser_prod___AGeMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3874, LOCATE_parser_prod___ALtMethid___n_lt__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label322;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label322: while(false);
+  return_label325: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3859, LOCATE_parser_prod___AGeMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ALtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3895, LOCATE_parser_prod___ALtMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ALtMethid____n_lt(variable[4]) /*ALtMethid::_n_lt*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ALtMethid____n_lt(variable[4]) /*ALtMethid::_n_lt*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label326;
   }
+  return_label326: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3866, LOCATE_parser_prod___AGeMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3910, LOCATE_parser_prod___ALtMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AGeMethid____n_ge( self) /*AGeMethid::_n_ge*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label327: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___n_lt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3874, LOCATE_parser_prod___ALtMethid___n_lt__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3917, LOCATE_parser_prod___ALtMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label328: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3882, LOCATE_parser_prod___ALtMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i]) return;
+  return_label329: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtMethid___init_altmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3884, LOCATE_parser_prod___ALtMethid___init_altmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i]) return;
-  ((parser_prod___ALtMethid___empty_init_t)CALL( self,COLOR_parser_prod___ALtMethid___empty_init))( self, init_table /*YYY*/) /*ALtMethid::empty_init*/;
-  ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/ =  variable0 /*n_lt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_lt*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_lt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_lt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_lt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_lt*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_lt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_lt*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_lt*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label330: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3895, LOCATE_parser_prod___ALtMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3925, LOCATE_parser_prod___AGtMethid___n_gt__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label328;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label328: while(false);
+  return_label331: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3910, LOCATE_parser_prod___ALtMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AGtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 3946, LOCATE_parser_prod___AGtMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AGtMethid____n_gt(variable[4]) /*AGtMethid::_n_gt*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AGtMethid____n_gt(variable[4]) /*AGtMethid::_n_gt*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label332;
   }
+  return_label332: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3917, LOCATE_parser_prod___ALtMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3961, LOCATE_parser_prod___AGtMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ALtMethid____n_lt( self) /*ALtMethid::_n_lt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label333: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___n_gt__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3925, LOCATE_parser_prod___AGtMethid___n_gt__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3968, LOCATE_parser_prod___AGtMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label334: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3933, LOCATE_parser_prod___AGtMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i]) return;
+  return_label335: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtMethid___init_agtmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3935, LOCATE_parser_prod___AGtMethid___init_agtmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i]) return;
-  ((parser_prod___AGtMethid___empty_init_t)CALL( self,COLOR_parser_prod___AGtMethid___empty_init))( self, init_table /*YYY*/) /*AGtMethid::empty_init*/;
-  ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/ =  variable0 /*n_gt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_gt*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_gt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_gt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_gt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_gt*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_gt*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_gt*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_gt*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label336: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 3946, LOCATE_parser_prod___AGtMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3976, LOCATE_parser_prod___ABraMethid___n_obra__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label334;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label334: while(false);
+  return_label337: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3961, LOCATE_parser_prod___AGtMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 3983, LOCATE_parser_prod___ABraMethid___n_cbra__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label338: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3968, LOCATE_parser_prod___AGtMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AGtMethid____n_gt( self) /*AGtMethid::_n_gt*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ABraMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4009, LOCATE_parser_prod___ABraMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ABraMethid____n_obra(variable[4]) /*ABraMethid::_n_obra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABraMethid____n_obra(variable[4]) /*ABraMethid::_n_obra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label339;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ABraMethid____n_cbra(variable[4]) /*ABraMethid::_n_cbra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABraMethid____n_cbra(variable[4]) /*ABraMethid::_n_cbra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label339;
   }
+  return_label339: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3976, LOCATE_parser_prod___ABraMethid___n_obra__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4034, LOCATE_parser_prod___ABraMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label340: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3983, LOCATE_parser_prod___ABraMethid___n_cbra__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ABraMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4044, LOCATE_parser_prod___ABraMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label341: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3991, LOCATE_parser_prod___ABraMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i]) return;
+  return_label342: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraMethid___init_abramethid(val_t  self, val_t  param0, val_t  param1, int* init_table) {
   struct trace_t trace = {NULL, NULL, 3993, LOCATE_parser_prod___ABraMethid___init_abramethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i]) return;
-  ((parser_prod___ABraMethid___empty_init_t)CALL( self,COLOR_parser_prod___ABraMethid___empty_init))( self, init_table /*YYY*/) /*ABraMethid::empty_init*/;
-  ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/ =  variable0 /*n_obra*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_obra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_obra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_obra*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_obra*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_obra*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/ =  variable1 /*n_cbra*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_cbra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_cbra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_cbra*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_cbra*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_cbra*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label343: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4009, LOCATE_parser_prod___ABraMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label341;
-  }
-  variable2 = ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label341;
+void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4055, LOCATE_parser_prod___AStarshipMethid___n_starship__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label341: while(false);
+  return_label344: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4034, LOCATE_parser_prod___ABraMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStarshipMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4076, LOCATE_parser_prod___AStarshipMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AStarshipMethid____n_starship(variable[4]) /*AStarshipMethid::_n_starship*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStarshipMethid____n_starship(variable[4]) /*AStarshipMethid::_n_starship*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label345;
   }
+  return_label345: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4044, LOCATE_parser_prod___ABraMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4091, LOCATE_parser_prod___AStarshipMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraMethid____n_obra( self) /*ABraMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraMethid____n_cbra( self) /*ABraMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label346: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___n_starship__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4055, LOCATE_parser_prod___AStarshipMethid___n_starship__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4098, LOCATE_parser_prod___AStarshipMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label347: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4063, LOCATE_parser_prod___AStarshipMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
+  return_label348: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipMethid___init_astarshipmethid(val_t  self, val_t  param0, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4065, LOCATE_parser_prod___AStarshipMethid___init_astarshipmethid};
-  val_t variable0;
-  val_t variable1;
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i]) return;
-  ((parser_prod___AStarshipMethid___empty_init_t)CALL( self,COLOR_parser_prod___AStarshipMethid___empty_init))( self, init_table /*YYY*/) /*AStarshipMethid::empty_init*/;
-  ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/ =  variable0 /*n_starship*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_starship*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_starship*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_starship*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_starship*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_starship*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_starship*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_starship*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_starship*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label349: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4076, LOCATE_parser_prod___AStarshipMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4106, LOCATE_parser_prod___AAssignMethid___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label347;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label347: while(false);
+  return_label350: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4091, LOCATE_parser_prod___AStarshipMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4113, LOCATE_parser_prod___AAssignMethid___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label351: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4098, LOCATE_parser_prod___AStarshipMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStarshipMethid____n_starship( self) /*AStarshipMethid::_n_starship*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AAssignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4139, LOCATE_parser_prod___AAssignMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAssignMethid____n_id(variable[4]) /*AAssignMethid::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignMethid____n_id(variable[4]) /*AAssignMethid::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label352;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AAssignMethid____n_assign(variable[4]) /*AAssignMethid::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignMethid____n_assign(variable[4]) /*AAssignMethid::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label352;
   }
+  return_label352: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4106, LOCATE_parser_prod___AAssignMethid___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssignMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4164, LOCATE_parser_prod___AAssignMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label353: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4113, LOCATE_parser_prod___AAssignMethid___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AAssignMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4174, LOCATE_parser_prod___AAssignMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label354: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssignMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4121, LOCATE_parser_prod___AAssignMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
+  return_label355: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssignMethid___init_aassignmethid(val_t  self, val_t  param0, val_t  param1, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4123, LOCATE_parser_prod___AAssignMethid___init_aassignmethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i]) return;
-  ((parser_prod___AAssignMethid___empty_init_t)CALL( self,COLOR_parser_prod___AAssignMethid___empty_init))( self, init_table /*YYY*/) /*AAssignMethid::empty_init*/;
-  ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/ =  variable0 /*n_id*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/ =  variable1 /*n_assign*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label356: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4139, LOCATE_parser_prod___AAssignMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label354;
-  }
-  variable2 = ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label354;
+void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4185, LOCATE_parser_prod___ABraassignMethid___n_obra__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label354: while(false);
+  return_label357: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4164, LOCATE_parser_prod___AAssignMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4192, LOCATE_parser_prod___ABraassignMethid___n_cbra__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label358: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4174, LOCATE_parser_prod___AAssignMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4199, LOCATE_parser_prod___ABraassignMethid___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignMethid____n_id( self) /*AAssignMethid::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignMethid____n_assign( self) /*AAssignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label359: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_obra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4185, LOCATE_parser_prod___ABraassignMethid___n_obra__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4230, LOCATE_parser_prod___ABraassignMethid___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ABraassignMethid____n_obra(variable[4]) /*ABraassignMethid::_n_obra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABraassignMethid____n_obra(variable[4]) /*ABraassignMethid::_n_obra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label360;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[4]) /*ABraassignMethid::_n_cbra*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABraassignMethid____n_cbra(variable[4]) /*ABraassignMethid::_n_cbra*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label360;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ABraassignMethid____n_assign(variable[4]) /*ABraassignMethid::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABraassignMethid____n_assign(variable[4]) /*ABraassignMethid::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label360;
   }
+  return_label360: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_cbra__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4192, LOCATE_parser_prod___ABraassignMethid___n_cbra__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraassignMethid___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4265, LOCATE_parser_prod___ABraassignMethid___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label361: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4199, LOCATE_parser_prod___ABraassignMethid___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ABraassignMethid___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4278, LOCATE_parser_prod___ABraassignMethid___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label362: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraassignMethid___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4207, LOCATE_parser_prod___ABraassignMethid___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
+  return_label363: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraassignMethid___init_abraassignmethid(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4209, LOCATE_parser_prod___ABraassignMethid___init_abraassignmethid};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i]) return;
-  ((parser_prod___ABraassignMethid___empty_init_t)CALL( self,COLOR_parser_prod___ABraassignMethid___empty_init))( self, init_table /*YYY*/) /*ABraassignMethid::empty_init*/;
-  ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/ =  variable0 /*n_obra*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_obra*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_obra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_obra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_obra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_obra*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_obra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_obra*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_obra*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/ =  variable1 /*n_cbra*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_cbra*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_cbra*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_cbra*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_cbra*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_cbra*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_cbra*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_cbra*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_cbra*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/ =  variable2 /*n_assign*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label364: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraassignMethid].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4230, LOCATE_parser_prod___ABraassignMethid___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { 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);}
-  variable2 = ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label362;
-  }
-  variable2 = ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label362;
-  }
-  variable2 = ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { 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);}
-      ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label362;
+void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4292, LOCATE_parser_prod___ASignature___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label362: while(false);
+  return_label365: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4265, LOCATE_parser_prod___ABraassignMethid___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ASignature___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4327, LOCATE_parser_prod___ASignature___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label366;
+    }
+    continue_367: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___ASignature____n_type(variable[4]) /*ASignature::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASignature____n_type(variable[4]) /*ASignature::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label366;
   }
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label366;
+    }
+    continue_368: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
+  break_368: while(0);
+  return_label366: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraassignMethid___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4278, LOCATE_parser_prod___ABraassignMethid___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASignature___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4366, LOCATE_parser_prod___ASignature___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_obra( self) /*ABraassignMethid::_n_obra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_cbra( self) /*ABraassignMethid::_n_cbra*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABraassignMethid____n_assign( self) /*ABraassignMethid::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_370: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(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::==*/)))))));
+  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*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_371: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_371: while(0);
+  return_label369: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4292, LOCATE_parser_prod___ASignature___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4379, LOCATE_parser_prod___ASignature___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_373: while(0);
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_374: while(0);
   }
+  break_374: while(0);
+  return_label372: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASignature___empty_init(val_t  self, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4300, LOCATE_parser_prod___ASignature___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
+  return_label375: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___init_asignature(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+void parser_prod___ASignature___init_asignature(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
   struct trace_t trace = {NULL, NULL, 4302, LOCATE_parser_prod___ASignature___init_asignature};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+  val_t variable[9];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i]) return;
-  ((parser_prod___ASignature___empty_init_t)CALL( self,COLOR_parser_prod___ASignature___empty_init))( self, init_table /*YYY*/) /*ASignature::empty_init*/;
-  variable2 = NEW_List_list___List___init(); /*new List[PParam]*/
-  ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_params*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_params*/) /*AbstractArray::iterator*/;
+  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*/;
+  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*/;
   while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = TAG_Bool(( variable3 /*n*/==NIT_NULL) || VAL_ISA( variable3 /*n*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___init_asignature, LOCATE_parser_prod, 4310); nit_exit(1);}
-    variable4 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable3 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PNode::parent=*/;
-    continue_368: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_368: while(0);
-  ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  variable1 /*n_type*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
-  }
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_377: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    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=*/;
+    continue_378: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+  }
+  break_378: while(0);
+  return_label376: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASignature].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4320, LOCATE_parser_prod___ASignature___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4322); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4326); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      } else { /*if*/
-        variable4 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
-      }
-      goto return_label369;
-    }
-    continue_370: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_370: while(0);
-  variable2 = ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASignature___replace_child, LOCATE_parser_prod, 4338); nit_exit(1);}
-      ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label369;
+void parser_prod___AParam___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4401, LOCATE_parser_prod___AParam___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label369: while(false);
+  return_label379: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4347, LOCATE_parser_prod___ASignature___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+void parser_prod___AParam___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4408, LOCATE_parser_prod___AParam___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
-  while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_372: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_372: while(0);
-  variable1 = ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label380: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASignature___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4357, LOCATE_parser_prod___ASignature___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AParam___n_dotdotdot__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4415, LOCATE_parser_prod___AParam___n_dotdotdot__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
-  while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ASignature____n_params( self) /*ASignature::_n_params*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_374: while(0);
-  }
-  break_374: while(0);
-  variable1 = ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASignature____n_type( self) /*ASignature::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label381: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4372, LOCATE_parser_prod___AParam___n_id__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4446, LOCATE_parser_prod___AParam___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PParam____n_id(variable[4]) /*PParam::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PParam____n_id(variable[4]) /*PParam::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label382;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___PParam____n_type(variable[4]) /*PParam::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___PParam____n_type(variable[4]) /*PParam::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label382;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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];
+      ATTR_parser_nodes___AParam____n_dotdotdot(variable[4]) /*AParam::_n_dotdotdot*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AParam____n_dotdotdot(variable[4]) /*AParam::_n_dotdotdot*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label382;
   }
+  return_label382: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4379, LOCATE_parser_prod___AParam___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4481, LOCATE_parser_prod___AParam___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label383: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___n_dotdotdot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4386, LOCATE_parser_prod___AParam___n_dotdotdot__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4494, LOCATE_parser_prod___AParam___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label384: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParam___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4394, LOCATE_parser_prod___AParam___empty_init};
+  struct trace_t trace = {NULL, NULL, 4423, LOCATE_parser_prod___AParam___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i]) return;
+  return_label385: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParam___init_aparam(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4396, LOCATE_parser_prod___AParam___init_aparam};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  struct trace_t trace = {NULL, NULL, 4425, LOCATE_parser_prod___AParam___init_aparam};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i]) return;
-  ((parser_prod___AParam___empty_init_t)CALL( self,COLOR_parser_prod___AParam___empty_init))( self, init_table /*YYY*/) /*AParam::empty_init*/;
-  ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/ =  variable0 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/ =  variable1 /*n_type*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/ =  variable2 /*n_dotdotdot*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_dotdotdot*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_dotdotdot*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_dotdotdot*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_dotdotdot*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_dotdotdot*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_dotdotdot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_dotdotdot*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_dotdotdot*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label386: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParam].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4417, LOCATE_parser_prod___AParam___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4419); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4423); nit_exit(1);}
-      ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label380;
-  }
-  variable2 = ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4433); nit_exit(1);}
-      ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label380;
-  }
-  variable2 = ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParam___replace_child, LOCATE_parser_prod, 4443); nit_exit(1);}
-      ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label380;
+void parser_prod___AClosureDecl___n_kwwith__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4508, LOCATE_parser_prod___AClosureDecl___n_kwwith__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label380: while(false);
+  return_label387: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4452, LOCATE_parser_prod___AParam___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDecl___n_kwbreak__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4515, LOCATE_parser_prod___AClosureDecl___n_kwbreak__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label388: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParam___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4465, LOCATE_parser_prod___AParam___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDecl___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4522, LOCATE_parser_prod___AClosureDecl___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_id( self) /*PParam::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___PParam____n_type( self) /*PParam::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AParam____n_dotdotdot( self) /*AParam::_n_dotdotdot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label389: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4479, LOCATE_parser_prod___AType___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDecl___n_signature__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4529, LOCATE_parser_prod___AClosureDecl___n_signature__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label390: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AType___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4487, LOCATE_parser_prod___AType___empty_init};
+void parser_prod___AClosureDecl___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4565, LOCATE_parser_prod___AClosureDecl___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
+  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::==*/)))))));
+  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, 4567); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4571); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[4]) /*AClosureDecl::_n_kwwith*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[4]) /*AClosureDecl::_n_kwwith*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label391;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4581); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[4]) /*AClosureDecl::_n_kwbreak*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[4]) /*AClosureDecl::_n_kwbreak*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label391;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4591); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_id(variable[4]) /*AClosureDecl::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_id(variable[4]) /*AClosureDecl::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label391;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4601); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_signature(variable[4]) /*AClosureDecl::_n_signature*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDecl____n_signature(variable[4]) /*AClosureDecl::_n_signature*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label391;
+  }
+  return_label391: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4610, LOCATE_parser_prod___AClosureDecl___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label392: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4626, LOCATE_parser_prod___AClosureDecl___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label393: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4537, LOCATE_parser_prod___AClosureDecl___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDecl].i]) return;
+  return_label394: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDecl].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDecl___init_aclosuredecl(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4539, LOCATE_parser_prod___AClosureDecl___init_aclosuredecl};
+  val_t variable[7];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDecl].i]) return;
+  variable[6] = variable[0];
+  ((parser_prod___AClosureDecl___empty_init_t)CALL(variable[6],COLOR_parser_prod___AClosureDecl___empty_init))(variable[6], init_table /*YYY*/) /*AClosureDecl::empty_init*/;
+  variable[6] = variable[0];
+  ATTR_parser_nodes___AClosureDecl____n_kwwith(variable[6]) /*AClosureDecl::_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::==*/)))))));
+  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=*/;
+  }
+  variable[6] = variable[0];
+  ATTR_parser_nodes___AClosureDecl____n_kwbreak(variable[6]) /*AClosureDecl::_n_kwbreak*/ =  variable[2] /*n_kwbreak*/;
+  variable[6] = 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::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    variable[6] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*n_kwbreak*/,COLOR_parser_prod___PNode___parent__eq))( variable[2] /*n_kwbreak*/, variable[6]) /*PNode::parent=*/;
+  }
+  variable[6] = variable[0];
+  ATTR_parser_nodes___AClosureDecl____n_id(variable[6]) /*AClosureDecl::_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::==*/)))))));
+  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=*/;
+  }
+  variable[6] = variable[0];
+  ATTR_parser_nodes___AClosureDecl____n_signature(variable[6]) /*AClosureDecl::_n_signature*/ =  variable[4] /*n_signature*/;
+  variable[6] = 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::==*/)))))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    variable[6] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[4] /*n_signature*/,COLOR_parser_prod___PNode___parent__eq))( variable[4] /*n_signature*/, variable[6]) /*PNode::parent=*/;
+  }
+  return_label395: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDecl].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AType___init_atype(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4489, LOCATE_parser_prod___AType___init_atype};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___AType___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4643, LOCATE_parser_prod___AType___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i]) return;
-  ((parser_prod___AType___empty_init_t)CALL( self,COLOR_parser_prod___AType___empty_init))( self, init_table /*YYY*/) /*AType::empty_init*/;
-  ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/ =  variable0 /*n_id*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable2 = NEW_List_list___List___init(); /*new List[PType]*/
-  ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_types*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_types*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = TAG_Bool(( variable3 /*n*/==NIT_NULL) || VAL_ISA( variable3 /*n*/, COLOR_PType, ID_PType)) /*cast PType*/;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___init_atype, LOCATE_parser_prod, 4501); nit_exit(1);}
-    variable4 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable3 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PNode::parent=*/;
-    continue_386: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_386: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label396: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4507, LOCATE_parser_prod___AType___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4509); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4513); nit_exit(1);}
-      ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label387;
-  }
-  variable2 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4671, LOCATE_parser_prod___AType___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 4673); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4677); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AType____n_id(variable[4]) /*AType::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AType____n_id(variable[4]) /*AType::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label397;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AType___replace_child, LOCATE_parser_prod, 4523); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 4687); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label387;
+      goto return_label397;
     }
-    continue_388: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_398: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_388: while(0);
-  return_label387: while(false);
+  break_398: while(0);
+  return_label397: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4534, LOCATE_parser_prod___AType___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4698, LOCATE_parser_prod___AType___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_390: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_400: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_390: while(0);
+  break_400: while(0);
+  return_label399: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AType___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4544, LOCATE_parser_prod___AType___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AType____n_id( self) /*AType::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 4708, LOCATE_parser_prod___AType___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AType____n_types( self) /*AType::_n_types*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_392: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_402: while(0);
   }
-  break_392: while(0);
+  break_402: while(0);
+  return_label401: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABlockExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4560, LOCATE_parser_prod___ABlockExpr___empty_init};
+void parser_prod___AType___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4651, LOCATE_parser_prod___AType___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i]) return;
+  return_label403: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABlockExpr___init_ablockexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4562, LOCATE_parser_prod___ABlockExpr___init_ablockexpr};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+void parser_prod___AType___init_atype(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4653, LOCATE_parser_prod___AType___init_atype};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
-  ((parser_prod___ABlockExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABlockExpr___empty_init))( self, init_table /*YYY*/) /*ABlockExpr::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_expr*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_expr*/) /*AbstractArray::iterator*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___init_ablockexpr, LOCATE_parser_prod, 4569); nit_exit(1);}
-    variable3 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_395: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_395: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
+    variable[5] = ((array___ArrayIterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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, 4665); 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*/;
+    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=*/;
+    continue_405: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*ArrayIterator::next*/;
+  }
+  break_405: while(0);
+  return_label404: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AType].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4575, LOCATE_parser_prod___ABlockExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4577); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 4739, LOCATE_parser_prod___ABlockExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 4741); 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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABlockExpr___replace_child, LOCATE_parser_prod, 4581); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 4745); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label396;
+      goto return_label406;
     }
-    continue_397: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_407: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_397: while(0);
-  return_label396: while(false);
+  break_407: while(0);
+  return_label406: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4592, LOCATE_parser_prod___ABlockExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  struct trace_t trace = {NULL, NULL, 4756, LOCATE_parser_prod___ABlockExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  variable[0] =  self;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_399: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_409: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_399: while(0);
+  break_409: while(0);
+  return_label408: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABlockExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4599, LOCATE_parser_prod___ABlockExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 4763, LOCATE_parser_prod___ABlockExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  variable[0] =  self;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABlockExpr____n_expr( self) /*ABlockExpr::_n_expr*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_401: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_411: while(0);
   }
-  break_401: while(0);
+  break_411: while(0);
+  return_label410: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABlockExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4724, LOCATE_parser_prod___ABlockExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i]) return;
+  return_label412: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABlockExpr___init_ablockexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 4726, LOCATE_parser_prod___ABlockExpr___init_ablockexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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, 4733); 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*/;
+    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=*/;
+    continue_414: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_414: while(0);
+  return_label413: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABlockExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_kwvar__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4611, LOCATE_parser_prod___AVardeclExpr___n_kwvar__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4775, LOCATE_parser_prod___AVardeclExpr___n_kwvar__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label415: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4618, LOCATE_parser_prod___AVardeclExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4782, LOCATE_parser_prod___AVardeclExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label416: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4625, LOCATE_parser_prod___AVardeclExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4789, LOCATE_parser_prod___AVardeclExpr___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label417: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4632, LOCATE_parser_prod___AVardeclExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4796, LOCATE_parser_prod___AVardeclExpr___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label418: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4639, LOCATE_parser_prod___AVardeclExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 4803, LOCATE_parser_prod___AVardeclExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label419: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4844, LOCATE_parser_prod___AVardeclExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 4846); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4850); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[4]) /*AVardeclExpr::_n_kwvar*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_kwvar(variable[4]) /*AVardeclExpr::_n_kwvar*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label420;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4860); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_id(variable[4]) /*AVardeclExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_id(variable[4]) /*AVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label420;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4870); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_type(variable[4]) /*AVardeclExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_type(variable[4]) /*AVardeclExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label420;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4880); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_assign(variable[4]) /*AVardeclExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_assign(variable[4]) /*AVardeclExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label420;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4890); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_expr(variable[4]) /*AVardeclExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVardeclExpr____n_expr(variable[4]) /*AVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label420;
+  }
+  return_label420: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AVardeclExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4899, LOCATE_parser_prod___AVardeclExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label421: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4918, LOCATE_parser_prod___AVardeclExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label422: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4647, LOCATE_parser_prod___AVardeclExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 4811, LOCATE_parser_prod___AVardeclExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
+  return_label423: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVardeclExpr___init_avardeclexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4649, LOCATE_parser_prod___AVardeclExpr___init_avardeclexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
+  struct trace_t trace = {NULL, NULL, 4813, LOCATE_parser_prod___AVardeclExpr___init_avardeclexpr};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i]) return;
-  ((parser_prod___AVardeclExpr___empty_init_t)CALL( self,COLOR_parser_prod___AVardeclExpr___empty_init))( self, init_table /*YYY*/) /*AVardeclExpr::empty_init*/;
-  ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/ =  variable0 /*n_kwvar*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwvar*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwvar*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwvar*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwvar*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwvar*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwvar*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwvar*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwvar*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/ =  variable2 /*n_type*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_type*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/ =  variable3 /*n_assign*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/ =  variable4 /*n_expr*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label424: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4680, LOCATE_parser_prod___AVardeclExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4682); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4686); nit_exit(1);}
-      ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label409;
-  }
-  variable2 = ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4696); nit_exit(1);}
-      ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label409;
-  }
-  variable2 = ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4706); nit_exit(1);}
-      ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label409;
-  }
-  variable2 = ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4716); nit_exit(1);}
-      ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label409;
-  }
-  variable2 = ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVardeclExpr___replace_child, LOCATE_parser_prod, 4726); nit_exit(1);}
-      ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label409;
-  }
-  return_label409: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AVardeclExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4735, LOCATE_parser_prod___AVardeclExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4938, LOCATE_parser_prod___AReturnExpr___n_kwreturn__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label425: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4754, LOCATE_parser_prod___AVardeclExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4945, LOCATE_parser_prod___AReturnExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_kwvar( self) /*AVardeclExpr::_n_kwvar*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_id( self) /*AVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_type( self) /*AVardeclExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_assign( self) /*AVardeclExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  variable1 = ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVardeclExpr____n_expr( self) /*AVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  return_label426: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AReturnExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 4971, LOCATE_parser_prod___AReturnExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 4973); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4977); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[4]) /*AReturnExpr::_n_kwreturn*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReturnExpr____n_kwreturn(variable[4]) /*AReturnExpr::_n_kwreturn*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label427;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 4987); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReturnExpr____n_expr(variable[4]) /*AReturnExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReturnExpr____n_expr(variable[4]) /*AReturnExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label427;
   }
+  return_label427: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___n_kwreturn__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4774, LOCATE_parser_prod___AReturnExpr___n_kwreturn__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AReturnExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 4996, LOCATE_parser_prod___AReturnExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label428: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4781, LOCATE_parser_prod___AReturnExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AReturnExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5006, LOCATE_parser_prod___AReturnExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label429: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReturnExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4789, LOCATE_parser_prod___AReturnExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 4953, LOCATE_parser_prod___AReturnExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
+  return_label430: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AReturnExpr___init_areturnexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4791, LOCATE_parser_prod___AReturnExpr___init_areturnexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 4955, LOCATE_parser_prod___AReturnExpr___init_areturnexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i]) return;
-  ((parser_prod___AReturnExpr___empty_init_t)CALL( self,COLOR_parser_prod___AReturnExpr___empty_init))( self, init_table /*YYY*/) /*AReturnExpr::empty_init*/;
-  ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/ =  variable0 /*n_kwreturn*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwreturn*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwreturn*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwreturn*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwreturn*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwreturn*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwreturn*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwreturn*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwreturn*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label431: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AReturnExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4807, LOCATE_parser_prod___AReturnExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 4809); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 4813); nit_exit(1);}
-      ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label416;
-  }
-  variable2 = ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AReturnExpr___replace_child, LOCATE_parser_prod, 4823); nit_exit(1);}
-      ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label416;
+void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5017, LOCATE_parser_prod___ABreakExpr___n_kwbreak__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label416: while(false);
+  return_label432: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4832, LOCATE_parser_prod___AReturnExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABreakExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5024, LOCATE_parser_prod___ABreakExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label433: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ABreakExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5050, LOCATE_parser_prod___ABreakExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5052); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5056); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[4]) /*ABreakExpr::_n_kwbreak*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABreakExpr____n_kwbreak(variable[4]) /*ABreakExpr::_n_kwbreak*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label434;
   }
-  variable1 = ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5066); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABreakExpr____n_expr(variable[4]) /*ABreakExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABreakExpr____n_expr(variable[4]) /*ABreakExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label434;
   }
+  return_label434: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AReturnExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4842, LOCATE_parser_prod___AReturnExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABreakExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5075, LOCATE_parser_prod___ABreakExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReturnExpr____n_kwreturn( self) /*AReturnExpr::_n_kwreturn*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReturnExpr____n_expr( self) /*AReturnExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label435: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___n_kwbreak__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4853, LOCATE_parser_prod___ABreakExpr___n_kwbreak__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABreakExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5085, LOCATE_parser_prod___ABreakExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label436: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABreakExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4861, LOCATE_parser_prod___ABreakExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5032, LOCATE_parser_prod___ABreakExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
+  return_label437: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___init_abreakexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4863, LOCATE_parser_prod___ABreakExpr___init_abreakexpr};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABreakExpr___init_abreakexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5034, LOCATE_parser_prod___ABreakExpr___init_abreakexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i]) return;
-  ((parser_prod___ABreakExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABreakExpr___empty_init))( self, init_table /*YYY*/) /*ABreakExpr::empty_init*/;
-  ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  variable0 /*n_kwbreak*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwbreak*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwbreak*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwbreak*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwbreak*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwbreak*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwbreak*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwbreak*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label438: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABreakExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4874, LOCATE_parser_prod___ABreakExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 4876); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABreakExpr___replace_child, LOCATE_parser_prod, 4880); nit_exit(1);}
-      ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label422;
+void parser_prod___AAbortExpr___n_kwabort__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5096, LOCATE_parser_prod___AAbortExpr___n_kwabort__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label422: while(false);
+  return_label439: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4889, LOCATE_parser_prod___ABreakExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AAbortExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5117, LOCATE_parser_prod___AAbortExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5119); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5123); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[4]) /*AAbortExpr::_n_kwabort*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAbortExpr____n_kwabort(variable[4]) /*AAbortExpr::_n_kwabort*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label440;
   }
+  return_label440: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABreakExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4896, LOCATE_parser_prod___ABreakExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAbortExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5132, LOCATE_parser_prod___AAbortExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABreakExpr____n_kwbreak( self) /*ABreakExpr::_n_kwbreak*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label441: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbortExpr___n_kwabort__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4904, LOCATE_parser_prod___AAbortExpr___n_kwabort__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAbortExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5139, LOCATE_parser_prod___AAbortExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label442: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbortExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4912, LOCATE_parser_prod___AAbortExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5104, LOCATE_parser_prod___AAbortExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
+  return_label443: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAbortExpr___init_aabortexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4914, LOCATE_parser_prod___AAbortExpr___init_aabortexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5106, LOCATE_parser_prod___AAbortExpr___init_aabortexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i]) return;
-  ((parser_prod___AAbortExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAbortExpr___empty_init))( self, init_table /*YYY*/) /*AAbortExpr::empty_init*/;
-  ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/ =  variable0 /*n_kwabort*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwabort*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwabort*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwabort*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwabort*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwabort*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwabort*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwabort*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwabort*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label444: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAbortExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbortExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4925, LOCATE_parser_prod___AAbortExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 4927); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAbortExpr___replace_child, LOCATE_parser_prod, 4931); nit_exit(1);}
-      ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label428;
+void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5147, LOCATE_parser_prod___AContinueExpr___n_kwcontinue__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label428: while(false);
+  return_label445: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbortExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4940, LOCATE_parser_prod___AAbortExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AContinueExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5154, LOCATE_parser_prod___AContinueExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label446: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAbortExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4947, LOCATE_parser_prod___AAbortExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AContinueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5180, LOCATE_parser_prod___AContinueExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5182); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5186); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[4]) /*AContinueExpr::_n_kwcontinue*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AContinueExpr____n_kwcontinue(variable[4]) /*AContinueExpr::_n_kwcontinue*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label447;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5196); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AContinueExpr____n_expr(variable[4]) /*AContinueExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AContinueExpr____n_expr(variable[4]) /*AContinueExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label447;
+  }
+  return_label447: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AContinueExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5205, LOCATE_parser_prod___AContinueExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAbortExpr____n_kwabort( self) /*AAbortExpr::_n_kwabort*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label448: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___n_kwcontinue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4955, LOCATE_parser_prod___AContinueExpr___n_kwcontinue__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AContinueExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5215, LOCATE_parser_prod___AContinueExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label449: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AContinueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4963, LOCATE_parser_prod___AContinueExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5162, LOCATE_parser_prod___AContinueExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
+  return_label450: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___init_acontinueexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4965, LOCATE_parser_prod___AContinueExpr___init_acontinueexpr};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AContinueExpr___init_acontinueexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5164, LOCATE_parser_prod___AContinueExpr___init_acontinueexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i]) return;
-  ((parser_prod___AContinueExpr___empty_init_t)CALL( self,COLOR_parser_prod___AContinueExpr___empty_init))( self, init_table /*YYY*/) /*AContinueExpr::empty_init*/;
-  ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/ =  variable0 /*n_kwcontinue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwcontinue*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwcontinue*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwcontinue*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwcontinue*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwcontinue*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwcontinue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwcontinue*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwcontinue*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label451: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AContinueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 4976, LOCATE_parser_prod___AContinueExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 4978); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AContinueExpr___replace_child, LOCATE_parser_prod, 4982); nit_exit(1);}
-      ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label434;
+void parser_prod___ADoExpr___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5226, LOCATE_parser_prod___ADoExpr___n_kwdo__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label434: while(false);
+  return_label452: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4991, LOCATE_parser_prod___AContinueExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoExpr___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5233, LOCATE_parser_prod___ADoExpr___n_block__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label453: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AContinueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4998, LOCATE_parser_prod___AContinueExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AContinueExpr____n_kwcontinue( self) /*AContinueExpr::_n_kwcontinue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5259, LOCATE_parser_prod___ADoExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5261); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5265); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ADoExpr____n_kwdo(variable[4]) /*ADoExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ADoExpr____n_kwdo(variable[4]) /*ADoExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label454;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5275); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ADoExpr____n_block(variable[4]) /*ADoExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ADoExpr____n_block(variable[4]) /*ADoExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label454;
   }
+  return_label454: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5006, LOCATE_parser_prod___ADoExpr___n_kwdo__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5284, LOCATE_parser_prod___ADoExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label455: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5013, LOCATE_parser_prod___ADoExpr___n_block__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5294, LOCATE_parser_prod___ADoExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label456: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5021, LOCATE_parser_prod___ADoExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5241, LOCATE_parser_prod___ADoExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i]) return;
+  return_label457: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoExpr___init_adoexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5023, LOCATE_parser_prod___ADoExpr___init_adoexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 5243, LOCATE_parser_prod___ADoExpr___init_adoexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i]) return;
-  ((parser_prod___ADoExpr___empty_init_t)CALL( self,COLOR_parser_prod___ADoExpr___empty_init))( self, init_table /*YYY*/) /*ADoExpr::empty_init*/;
-  ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/ =  variable0 /*n_kwdo*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwdo*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/ =  variable1 /*n_block*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_block*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label458: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5039, LOCATE_parser_prod___ADoExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5041); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5045); nit_exit(1);}
-      ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label441;
-  }
-  variable2 = ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoExpr___replace_child, LOCATE_parser_prod, 5055); nit_exit(1);}
-      ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label441;
-  }
-  return_label441: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5064, LOCATE_parser_prod___ADoExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ADoExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5074, LOCATE_parser_prod___ADoExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADoExpr____n_kwdo( self) /*ADoExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ADoExpr____n_block( self) /*ADoExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
 void parser_prod___AIfExpr___n_kwif__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5085, LOCATE_parser_prod___AIfExpr___n_kwif__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5305, LOCATE_parser_prod___AIfExpr___n_kwif__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label459: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5092, LOCATE_parser_prod___AIfExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5312, LOCATE_parser_prod___AIfExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label460: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5099, LOCATE_parser_prod___AIfExpr___n_then__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5319, LOCATE_parser_prod___AIfExpr___n_then__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label461: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5106, LOCATE_parser_prod___AIfExpr___n_else__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5326, LOCATE_parser_prod___AIfExpr___n_else__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label462: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5114, LOCATE_parser_prod___AIfExpr___empty_init};
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AIfExpr___init_aifexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5116, LOCATE_parser_prod___AIfExpr___init_aifexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i]) return;
-  ((parser_prod___AIfExpr___empty_init_t)CALL( self,COLOR_parser_prod___AIfExpr___empty_init))( self, init_table /*YYY*/) /*AIfExpr::empty_init*/;
-  ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/ =  variable0 /*n_kwif*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwif*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwif*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwif*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwif*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwif*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/ =  variable2 /*n_then*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_then*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_then*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_then*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_then*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_then*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_then*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/ =  variable3 /*n_else*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_else*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_else*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_else*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_else*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_else*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_else*/,  self) /*PNode::parent=*/;
+void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5362, LOCATE_parser_prod___AIfExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5364); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5368); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_kwif(variable[4]) /*AIfExpr::_n_kwif*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_kwif(variable[4]) /*AIfExpr::_n_kwif*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label463;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5378); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_expr(variable[4]) /*AIfExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_expr(variable[4]) /*AIfExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label463;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5388); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_then(variable[4]) /*AIfExpr::_n_then*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_then(variable[4]) /*AIfExpr::_n_then*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label463;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5398); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_else(variable[4]) /*AIfExpr::_n_else*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfExpr____n_else(variable[4]) /*AIfExpr::_n_else*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label463;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
+  return_label463: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5142, LOCATE_parser_prod___AIfExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5144); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5148); nit_exit(1);}
-      ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label450;
-  }
-  variable2 = ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5158); nit_exit(1);}
-      ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label450;
-  }
-  variable2 = ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5168); nit_exit(1);}
-      ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label450;
-  }
-  variable2 = ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfExpr___replace_child, LOCATE_parser_prod, 5178); nit_exit(1);}
-      ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label450;
-  }
-  return_label450: while(false);
+void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5407, LOCATE_parser_prod___AIfExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label464: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5187, LOCATE_parser_prod___AIfExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5423, LOCATE_parser_prod___AIfExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label465: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIfExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5334, LOCATE_parser_prod___AIfExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i]) return;
+  return_label466: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5203, LOCATE_parser_prod___AIfExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIfExpr___init_aifexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 5336, LOCATE_parser_prod___AIfExpr___init_aifexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_kwif( self) /*AIfExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_expr( self) /*AIfExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_then( self) /*AIfExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfExpr____n_else( self) /*AIfExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label467: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwif__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5220, LOCATE_parser_prod___AIfexprExpr___n_kwif__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5440, LOCATE_parser_prod___AIfexprExpr___n_kwif__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label468: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5227, LOCATE_parser_prod___AIfexprExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5447, LOCATE_parser_prod___AIfexprExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label469: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwthen__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5234, LOCATE_parser_prod___AIfexprExpr___n_kwthen__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5454, LOCATE_parser_prod___AIfexprExpr___n_kwthen__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label470: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_then__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5241, LOCATE_parser_prod___AIfexprExpr___n_then__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5461, LOCATE_parser_prod___AIfexprExpr___n_then__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label471: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_kwelse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5248, LOCATE_parser_prod___AIfexprExpr___n_kwelse__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5468, LOCATE_parser_prod___AIfexprExpr___n_kwelse__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label472: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___n_else__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5255, LOCATE_parser_prod___AIfexprExpr___n_else__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 5475, LOCATE_parser_prod___AIfexprExpr___n_else__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label473: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5521, LOCATE_parser_prod___AIfexprExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5523); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5527); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[4]) /*AIfexprExpr::_n_kwif*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwif(variable[4]) /*AIfexprExpr::_n_kwif*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5537); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_expr(variable[4]) /*AIfexprExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_expr(variable[4]) /*AIfexprExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5547); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[4]) /*AIfexprExpr::_n_kwthen*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwthen(variable[4]) /*AIfexprExpr::_n_kwthen*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5557); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_then(variable[4]) /*AIfexprExpr::_n_then*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_then(variable[4]) /*AIfexprExpr::_n_then*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5567); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[4]) /*AIfexprExpr::_n_kwelse*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_kwelse(variable[4]) /*AIfexprExpr::_n_kwelse*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5577); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_else(variable[4]) /*AIfexprExpr::_n_else*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIfexprExpr____n_else(variable[4]) /*AIfexprExpr::_n_else*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label474;
   }
+  return_label474: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIfexprExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5586, LOCATE_parser_prod___AIfexprExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label475: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AIfexprExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5608, LOCATE_parser_prod___AIfexprExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label476: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5263, LOCATE_parser_prod___AIfexprExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5483, LOCATE_parser_prod___AIfexprExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
+  return_label477: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIfexprExpr___init_aifexprexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, val_t  param5, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5265, LOCATE_parser_prod___AIfexprExpr___init_aifexprexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  variable5 =  param5;
+  struct trace_t trace = {NULL, NULL, 5485, LOCATE_parser_prod___AIfexprExpr___init_aifexprexpr};
+  val_t variable[9];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  variable[6] =  param5;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i]) return;
-  ((parser_prod___AIfexprExpr___empty_init_t)CALL( self,COLOR_parser_prod___AIfexprExpr___empty_init))( self, init_table /*YYY*/) /*AIfexprExpr::empty_init*/;
-  ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/ =  variable0 /*n_kwif*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwif*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwif*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwif*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwif*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwif*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwif*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwif*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwif*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/ =  variable2 /*n_kwthen*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_kwthen*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_kwthen*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwthen*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_kwthen*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwthen*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_kwthen*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_kwthen*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_kwthen*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/ =  variable3 /*n_then*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_then*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_then*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_then*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_then*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_then*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_then*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_then*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_then*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/ =  variable4 /*n_kwelse*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_kwelse*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_kwelse*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_kwelse*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_kwelse*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_kwelse*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_kwelse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_kwelse*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_kwelse*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/ =  variable5 /*n_else*/;
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*n_else*/ ==  NIT_NULL /*null*/) || (( variable5 /*n_else*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*n_else*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*n_else*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*n_else*/,COLOR_kernel___Object_____eqeq))( variable5 /*n_else*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n_else*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n_else*/,  self) /*PNode::parent=*/;
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
   }
+  return_label478: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIfexprExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfexprExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5301, LOCATE_parser_prod___AIfexprExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5303); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5307); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
-  }
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5317); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
-  }
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5327); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
-  }
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5337); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
-  }
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5347); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
-  }
-  variable2 = ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIfexprExpr___replace_child, LOCATE_parser_prod, 5357); nit_exit(1);}
-      ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label461;
+void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5631, LOCATE_parser_prod___AWhileExpr___n_kwwhile__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label461: while(false);
+  return_label479: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfexprExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5366, LOCATE_parser_prod___AIfexprExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5638, LOCATE_parser_prod___AWhileExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label480: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIfexprExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5388, LOCATE_parser_prod___AIfexprExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5645, LOCATE_parser_prod___AWhileExpr___n_kwdo__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwif( self) /*AIfexprExpr::_n_kwif*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_expr( self) /*AIfexprExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwthen( self) /*AIfexprExpr::_n_kwthen*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_then( self) /*AIfexprExpr::_n_then*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_kwelse( self) /*AIfexprExpr::_n_kwelse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIfexprExpr____n_else( self) /*AIfexprExpr::_n_else*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label481: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_kwwhile__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5411, LOCATE_parser_prod___AWhileExpr___n_kwwhile__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5652, LOCATE_parser_prod___AWhileExpr___n_block__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label482: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5418, LOCATE_parser_prod___AWhileExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5688, LOCATE_parser_prod___AWhileExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5690); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5694); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[4]) /*AWhileExpr::_n_kwwhile*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_kwwhile(variable[4]) /*AWhileExpr::_n_kwwhile*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5704); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_expr(variable[4]) /*AWhileExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_expr(variable[4]) /*AWhileExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5714); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[4]) /*AWhileExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_kwdo(variable[4]) /*AWhileExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5724); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_block(variable[4]) /*AWhileExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AWhileExpr____n_block(variable[4]) /*AWhileExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label483;
   }
+  return_label483: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5425, LOCATE_parser_prod___AWhileExpr___n_kwdo__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+void parser_prod___AWhileExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5733, LOCATE_parser_prod___AWhileExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label484: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5432, LOCATE_parser_prod___AWhileExpr___n_block__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+void parser_prod___AWhileExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5749, LOCATE_parser_prod___AWhileExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label485: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWhileExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5440, LOCATE_parser_prod___AWhileExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5660, LOCATE_parser_prod___AWhileExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
+  return_label486: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AWhileExpr___init_awhileexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5442, LOCATE_parser_prod___AWhileExpr___init_awhileexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
+  struct trace_t trace = {NULL, NULL, 5662, LOCATE_parser_prod___AWhileExpr___init_awhileexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i]) return;
-  ((parser_prod___AWhileExpr___empty_init_t)CALL( self,COLOR_parser_prod___AWhileExpr___empty_init))( self, init_table /*YYY*/) /*AWhileExpr::empty_init*/;
-  ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/ =  variable0 /*n_kwwhile*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwwhile*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwwhile*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwwhile*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwwhile*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwwhile*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwwhile*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwwhile*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwwhile*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/ =  variable2 /*n_kwdo*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_kwdo*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/ =  variable3 /*n_block*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_block*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label487: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AWhileExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5468, LOCATE_parser_prod___AWhileExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5470); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5474); nit_exit(1);}
-      ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label470;
-  }
-  variable2 = ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5484); nit_exit(1);}
-      ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label470;
-  }
-  variable2 = ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5494); nit_exit(1);}
-      ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label470;
-  }
-  variable2 = ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AWhileExpr___replace_child, LOCATE_parser_prod, 5504); nit_exit(1);}
-      ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label470;
+void parser_prod___AForExpr___n_vardecl__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5766, LOCATE_parser_prod___AForExpr___n_vardecl__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label470: while(false);
+  return_label488: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5513, LOCATE_parser_prod___AWhileExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5773, LOCATE_parser_prod___AForExpr___n_kwdo__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label489: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AWhileExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5529, LOCATE_parser_prod___AWhileExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5780, LOCATE_parser_prod___AForExpr___n_block__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_kwwhile( self) /*AWhileExpr::_n_kwwhile*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_expr( self) /*AWhileExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_kwdo( self) /*AWhileExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AWhileExpr____n_block( self) /*AWhileExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label490: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_vardecl__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5546, LOCATE_parser_prod___AForExpr___n_vardecl__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5811, LOCATE_parser_prod___AForExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5813); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5817); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_vardecl(variable[4]) /*AForExpr::_n_vardecl*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_vardecl(variable[4]) /*AForExpr::_n_vardecl*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label491;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5827); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_kwdo(variable[4]) /*AForExpr::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_kwdo(variable[4]) /*AForExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label491;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5837); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_block(variable[4]) /*AForExpr::_n_block*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForExpr____n_block(variable[4]) /*AForExpr::_n_block*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label491;
   }
+  return_label491: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_kwdo__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5553, LOCATE_parser_prod___AForExpr___n_kwdo__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5846, LOCATE_parser_prod___AForExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label492: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___n_block__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5560, LOCATE_parser_prod___AForExpr___n_block__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5859, LOCATE_parser_prod___AForExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label493: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5568, LOCATE_parser_prod___AForExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5788, LOCATE_parser_prod___AForExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i]) return;
+  return_label494: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForExpr___init_aforexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5570, LOCATE_parser_prod___AForExpr___init_aforexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  struct trace_t trace = {NULL, NULL, 5790, LOCATE_parser_prod___AForExpr___init_aforexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i]) return;
-  ((parser_prod___AForExpr___empty_init_t)CALL( self,COLOR_parser_prod___AForExpr___empty_init))( self, init_table /*YYY*/) /*AForExpr::empty_init*/;
-  ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/ =  variable0 /*n_vardecl*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_vardecl*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_vardecl*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_vardecl*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_vardecl*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_vardecl*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_vardecl*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_vardecl*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_vardecl*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/ =  variable1 /*n_kwdo*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwdo*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwdo*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwdo*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwdo*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwdo*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwdo*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwdo*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/ =  variable2 /*n_block*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_block*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_block*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_block*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_block*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_block*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label495: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5591, LOCATE_parser_prod___AForExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5593); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5597); nit_exit(1);}
-      ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label478;
-  }
-  variable2 = ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5607); nit_exit(1);}
-      ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label478;
-  }
-  variable2 = ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForExpr___replace_child, LOCATE_parser_prod, 5617); nit_exit(1);}
-      ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label478;
+void parser_prod___AForVardeclExpr___n_kwfor__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5873, LOCATE_parser_prod___AForVardeclExpr___n_kwfor__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label478: while(false);
+  return_label496: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5626, LOCATE_parser_prod___AForExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5880, LOCATE_parser_prod___AForVardeclExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label497: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5639, LOCATE_parser_prod___AForExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5887, LOCATE_parser_prod___AForVardeclExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_vardecl( self) /*AForExpr::_n_vardecl*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_kwdo( self) /*AForExpr::_n_kwdo*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForExpr____n_block( self) /*AForExpr::_n_block*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label498: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_kwfor__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5653, LOCATE_parser_prod___AForVardeclExpr___n_kwfor__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 5918, LOCATE_parser_prod___AForVardeclExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 5920); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5924); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[4]) /*AForVardeclExpr::_n_kwfor*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_kwfor(variable[4]) /*AForVardeclExpr::_n_kwfor*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label499;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5934); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_id(variable[4]) /*AForVardeclExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_id(variable[4]) /*AForVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label499;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 5944); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[4]) /*AForVardeclExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AForVardeclExpr____n_expr(variable[4]) /*AForVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label499;
   }
+  return_label499: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5660, LOCATE_parser_prod___AForVardeclExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AForVardeclExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5953, LOCATE_parser_prod___AForVardeclExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label500: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5667, LOCATE_parser_prod___AForVardeclExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AForVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5966, LOCATE_parser_prod___AForVardeclExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label501: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForVardeclExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5675, LOCATE_parser_prod___AForVardeclExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 5895, LOCATE_parser_prod___AForVardeclExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i]) return;
+  return_label502: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AForVardeclExpr___init_aforvardeclexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5677, LOCATE_parser_prod___AForVardeclExpr___init_aforvardeclexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  struct trace_t trace = {NULL, NULL, 5897, LOCATE_parser_prod___AForVardeclExpr___init_aforvardeclexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i]) return;
-  ((parser_prod___AForVardeclExpr___empty_init_t)CALL( self,COLOR_parser_prod___AForVardeclExpr___empty_init))( self, init_table /*YYY*/) /*AForVardeclExpr::empty_init*/;
-  ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  variable0 /*n_kwfor*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwfor*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwfor*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwfor*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwfor*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwfor*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwfor*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwfor*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwfor*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  variable2 /*n_expr*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label503: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AForVardeclExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5698, LOCATE_parser_prod___AForVardeclExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5700); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5704); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label486;
-  }
-  variable2 = ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5714); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label486;
-  }
-  variable2 = ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AForVardeclExpr___replace_child, LOCATE_parser_prod, 5724); nit_exit(1);}
-      ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label486;
+void parser_prod___AAssertExpr___n_kwassert__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5980, LOCATE_parser_prod___AAssertExpr___n_kwassert__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label486: while(false);
+  return_label504: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5733, LOCATE_parser_prod___AForVardeclExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5987, LOCATE_parser_prod___AAssertExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label505: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AForVardeclExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5746, LOCATE_parser_prod___AForVardeclExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 5994, LOCATE_parser_prod___AAssertExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_kwfor( self) /*AForVardeclExpr::_n_kwfor*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_id( self) /*AForVardeclExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AForVardeclExpr____n_expr( self) /*AForVardeclExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label506: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___n_kwassert__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5760, LOCATE_parser_prod___AAssertExpr___n_kwassert__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6025, LOCATE_parser_prod___AAssertExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6027); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6031); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[4]) /*AAssertExpr::_n_kwassert*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_kwassert(variable[4]) /*AAssertExpr::_n_kwassert*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label507;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6041); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_id(variable[4]) /*AAssertExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_id(variable[4]) /*AAssertExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label507;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6051); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_expr(variable[4]) /*AAssertExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssertExpr____n_expr(variable[4]) /*AAssertExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label507;
   }
+  return_label507: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5767, LOCATE_parser_prod___AAssertExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6060, LOCATE_parser_prod___AAssertExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label508: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5774, LOCATE_parser_prod___AAssertExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAssertExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6073, LOCATE_parser_prod___AAssertExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label509: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssertExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5782, LOCATE_parser_prod___AAssertExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6002, LOCATE_parser_prod___AAssertExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
+  return_label510: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAssertExpr___init_aassertexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5784, LOCATE_parser_prod___AAssertExpr___init_aassertexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  struct trace_t trace = {NULL, NULL, 6004, LOCATE_parser_prod___AAssertExpr___init_aassertexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i]) return;
-  ((parser_prod___AAssertExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAssertExpr___empty_init))( self, init_table /*YYY*/) /*AAssertExpr::empty_init*/;
-  ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/ =  variable0 /*n_kwassert*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwassert*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwassert*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwassert*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwassert*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwassert*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwassert*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwassert*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwassert*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/ =  variable2 /*n_expr*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label511: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAssertExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5805, LOCATE_parser_prod___AAssertExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 5807); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 5811); nit_exit(1);}
-      ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label494;
-  }
-  variable2 = ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 5821); nit_exit(1);}
-      ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label494;
-  }
-  variable2 = ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAssertExpr___replace_child, LOCATE_parser_prod, 5831); nit_exit(1);}
-      ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label494;
+void parser_prod___AOnceExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6094, LOCATE_parser_prod___AOnceExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label494: while(false);
+  return_label512: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5840, LOCATE_parser_prod___AAssertExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOnceExpr___n_kwonce__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6087, LOCATE_parser_prod___AOnceExpr___n_kwonce__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label513: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAssertExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5853, LOCATE_parser_prod___AAssertExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_kwassert( self) /*AAssertExpr::_n_kwassert*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_id( self) /*AAssertExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AOnceExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6120, LOCATE_parser_prod___AOnceExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6122); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6126); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[4]) /*AOnceExpr::_n_kwonce*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOnceExpr____n_kwonce(variable[4]) /*AOnceExpr::_n_kwonce*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label514;
   }
-  variable1 = ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssertExpr____n_expr( self) /*AAssertExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6136); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label514;
   }
+  return_label514: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___n_kwonce__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5867, LOCATE_parser_prod___AOnceExpr___n_kwonce__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOnceExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6145, LOCATE_parser_prod___AOnceExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label515: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5874, LOCATE_parser_prod___AOnceExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOnceExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6155, LOCATE_parser_prod___AOnceExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label516: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5882, LOCATE_parser_prod___AOnceExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6102, LOCATE_parser_prod___AOnceExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
+  return_label517: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOnceExpr___init_aonceexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5884, LOCATE_parser_prod___AOnceExpr___init_aonceexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6104, LOCATE_parser_prod___AOnceExpr___init_aonceexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i]) return;
-  ((parser_prod___AOnceExpr___empty_init_t)CALL( self,COLOR_parser_prod___AOnceExpr___empty_init))( self, init_table /*YYY*/) /*AOnceExpr::empty_init*/;
-  ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/ =  variable0 /*n_kwonce*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwonce*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwonce*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwonce*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwonce*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwonce*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwonce*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwonce*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwonce*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label518: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOnceExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5900, LOCATE_parser_prod___AOnceExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 5902); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 5906); nit_exit(1);}
-      ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label501;
-  }
-  variable2 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOnceExpr___replace_child, LOCATE_parser_prod, 5916); nit_exit(1);}
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label501;
+void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6166, LOCATE_parser_prod___ASendExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label501: while(false);
+  return_label519: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5925, LOCATE_parser_prod___AOnceExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ASendExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6187, LOCATE_parser_prod___ASendExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6189); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6193); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label520;
   }
+  return_label520: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOnceExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5935, LOCATE_parser_prod___AOnceExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASendExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6202, LOCATE_parser_prod___ASendExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOnceExpr____n_kwonce( self) /*AOnceExpr::_n_kwonce*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label521: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5946, LOCATE_parser_prod___ASendExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASendExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6209, LOCATE_parser_prod___ASendExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label522: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASendExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5954, LOCATE_parser_prod___ASendExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6174, LOCATE_parser_prod___ASendExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i]) return;
+  return_label523: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASendExpr___init_asendexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5956, LOCATE_parser_prod___ASendExpr___init_asendexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 6176, LOCATE_parser_prod___ASendExpr___init_asendexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i]) return;
-  ((parser_prod___ASendExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASendExpr___empty_init))( self, init_table /*YYY*/) /*ASendExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label524: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASendExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 5967, LOCATE_parser_prod___ASendExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 5969); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASendExpr___replace_child, LOCATE_parser_prod, 5973); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label507;
+void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6217, LOCATE_parser_prod___ABinopExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label507: while(false);
+  return_label525: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5982, LOCATE_parser_prod___ASendExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6224, LOCATE_parser_prod___ABinopExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label526: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASendExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5989, LOCATE_parser_prod___ASendExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ABinopExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6250, LOCATE_parser_prod___ABinopExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6252); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6256); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label527;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6266); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label527;
   }
+  return_label527: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5997, LOCATE_parser_prod___ABinopExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ABinopExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6275, LOCATE_parser_prod___ABinopExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label528: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6004, LOCATE_parser_prod___ABinopExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABinopExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6285, LOCATE_parser_prod___ABinopExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label529: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABinopExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6012, LOCATE_parser_prod___ABinopExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6232, LOCATE_parser_prod___ABinopExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABinopExpr].i]) return;
-  ((parser_prod___ASendExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASendExpr___empty_init))( self, init_table /*YYY*/) /*ASendExpr::empty_init*/;
+  return_label530: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABinopExpr___init_abinopexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6014, LOCATE_parser_prod___ABinopExpr___init_abinopexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6234, LOCATE_parser_prod___ABinopExpr___init_abinopexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABinopExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label531: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABinopExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6030, LOCATE_parser_prod___ABinopExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6032); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6036); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label514;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABinopExpr___replace_child, LOCATE_parser_prod, 6046); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label514;
+void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6296, LOCATE_parser_prod___AOrExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label514: while(false);
+  return_label532: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6055, LOCATE_parser_prod___ABinopExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6303, LOCATE_parser_prod___AOrExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label533: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABinopExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6065, LOCATE_parser_prod___ABinopExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AOrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6329, LOCATE_parser_prod___AOrExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6331); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6335); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOrExpr____n_expr(variable[4]) /*AOrExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOrExpr____n_expr(variable[4]) /*AOrExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label534;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6345); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOrExpr____n_expr2(variable[4]) /*AOrExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AOrExpr____n_expr2(variable[4]) /*AOrExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label534;
   }
+  return_label534: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6076, LOCATE_parser_prod___AOrExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AOrExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6354, LOCATE_parser_prod___AOrExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label535: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6083, LOCATE_parser_prod___AOrExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6364, LOCATE_parser_prod___AOrExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label536: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6091, LOCATE_parser_prod___AOrExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6311, LOCATE_parser_prod___AOrExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i]) return;
+  return_label537: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrExpr___init_aorexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6093, LOCATE_parser_prod___AOrExpr___init_aorexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6313, LOCATE_parser_prod___AOrExpr___init_aorexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i]) return;
-  ((parser_prod___AOrExpr___empty_init_t)CALL( self,COLOR_parser_prod___AOrExpr___empty_init))( self, init_table /*YYY*/) /*AOrExpr::empty_init*/;
-  ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label538: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6109, LOCATE_parser_prod___AOrExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6111); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6115); nit_exit(1);}
-      ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label521;
-  }
-  variable2 = ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrExpr___replace_child, LOCATE_parser_prod, 6125); nit_exit(1);}
-      ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label521;
+void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6375, LOCATE_parser_prod___AAndExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label521: while(false);
+  return_label539: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6134, LOCATE_parser_prod___AOrExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6382, LOCATE_parser_prod___AAndExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label540: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6144, LOCATE_parser_prod___AOrExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOrExpr____n_expr( self) /*AOrExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AOrExpr____n_expr2( self) /*AOrExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AAndExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6408, LOCATE_parser_prod___AAndExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6410); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6414); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAndExpr____n_expr(variable[4]) /*AAndExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAndExpr____n_expr(variable[4]) /*AAndExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label541;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6424); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAndExpr____n_expr2(variable[4]) /*AAndExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAndExpr____n_expr2(variable[4]) /*AAndExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label541;
   }
+  return_label541: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6155, LOCATE_parser_prod___AAndExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AAndExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6433, LOCATE_parser_prod___AAndExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label542: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6162, LOCATE_parser_prod___AAndExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAndExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6443, LOCATE_parser_prod___AAndExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label543: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAndExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6170, LOCATE_parser_prod___AAndExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6390, LOCATE_parser_prod___AAndExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i]) return;
+  return_label544: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAndExpr___init_aandexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6172, LOCATE_parser_prod___AAndExpr___init_aandexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6392, LOCATE_parser_prod___AAndExpr___init_aandexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i]) return;
-  ((parser_prod___AAndExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAndExpr___empty_init))( self, init_table /*YYY*/) /*AAndExpr::empty_init*/;
-  ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label545: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAndExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6188, LOCATE_parser_prod___AAndExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6190); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6194); nit_exit(1);}
-      ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label528;
-  }
-  variable2 = ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAndExpr___replace_child, LOCATE_parser_prod, 6204); nit_exit(1);}
-      ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label528;
+void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6454, LOCATE_parser_prod___ANotExpr___n_kwnot__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label528: while(false);
+  return_label546: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6213, LOCATE_parser_prod___AAndExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6461, LOCATE_parser_prod___ANotExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label547: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAndExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6223, LOCATE_parser_prod___AAndExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAndExpr____n_expr( self) /*AAndExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAndExpr____n_expr2( self) /*AAndExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ANotExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6487, LOCATE_parser_prod___ANotExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6489); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6493); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANotExpr____n_kwnot(variable[4]) /*ANotExpr::_n_kwnot*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANotExpr____n_kwnot(variable[4]) /*ANotExpr::_n_kwnot*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label548;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6503); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANotExpr____n_expr(variable[4]) /*ANotExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANotExpr____n_expr(variable[4]) /*ANotExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label548;
   }
+  return_label548: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___n_kwnot__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6234, LOCATE_parser_prod___ANotExpr___n_kwnot__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ANotExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6512, LOCATE_parser_prod___ANotExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label549: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6241, LOCATE_parser_prod___ANotExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANotExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6522, LOCATE_parser_prod___ANotExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label550: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANotExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6249, LOCATE_parser_prod___ANotExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6469, LOCATE_parser_prod___ANotExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i]) return;
+  return_label551: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANotExpr___init_anotexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6251, LOCATE_parser_prod___ANotExpr___init_anotexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6471, LOCATE_parser_prod___ANotExpr___init_anotexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i]) return;
-  ((parser_prod___ANotExpr___empty_init_t)CALL( self,COLOR_parser_prod___ANotExpr___empty_init))( self, init_table /*YYY*/) /*ANotExpr::empty_init*/;
-  ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/ =  variable0 /*n_kwnot*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwnot*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwnot*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnot*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwnot*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnot*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwnot*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwnot*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwnot*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label552: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANotExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6267, LOCATE_parser_prod___ANotExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6269); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6273); nit_exit(1);}
-      ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label535;
-  }
-  variable2 = ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANotExpr___replace_child, LOCATE_parser_prod, 6283); nit_exit(1);}
-      ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label535;
+void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6533, LOCATE_parser_prod___AEqExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label535: while(false);
+  return_label553: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6292, LOCATE_parser_prod___ANotExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6540, LOCATE_parser_prod___AEqExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label554: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANotExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6302, LOCATE_parser_prod___ANotExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANotExpr____n_kwnot( self) /*ANotExpr::_n_kwnot*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANotExpr____n_expr( self) /*ANotExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AEqExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6566, LOCATE_parser_prod___AEqExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6568); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6572); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label555;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6582); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label555;
   }
+  return_label555: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6313, LOCATE_parser_prod___AEqExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AEqExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6591, LOCATE_parser_prod___AEqExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label556: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6320, LOCATE_parser_prod___AEqExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEqExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6601, LOCATE_parser_prod___AEqExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label557: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6328, LOCATE_parser_prod___AEqExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6548, LOCATE_parser_prod___AEqExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label558: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEqExpr___init_aeqexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6330, LOCATE_parser_prod___AEqExpr___init_aeqexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6550, LOCATE_parser_prod___AEqExpr___init_aeqexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqExpr].i]) return;
-  ((parser_prod___AEqExpr___empty_init_t)CALL( self,COLOR_parser_prod___AEqExpr___empty_init))( self, init_table /*YYY*/) /*AEqExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label559: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEqExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6346, LOCATE_parser_prod___AEqExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6348); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6352); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label542;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEqExpr___replace_child, LOCATE_parser_prod, 6362); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label542;
+void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6612, LOCATE_parser_prod___AEeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label542: while(false);
+  return_label560: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6371, LOCATE_parser_prod___AEqExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6619, LOCATE_parser_prod___AEeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label561: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEqExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6381, LOCATE_parser_prod___AEqExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AEeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6645, LOCATE_parser_prod___AEeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6647); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6651); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEeExpr____n_expr(variable[4]) /*AEeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEeExpr____n_expr(variable[4]) /*AEeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label562;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6661); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEeExpr____n_expr2(variable[4]) /*AEeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEeExpr____n_expr2(variable[4]) /*AEeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label562;
   }
+  return_label562: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6392, LOCATE_parser_prod___AEeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AEeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6670, LOCATE_parser_prod___AEeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label563: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6399, LOCATE_parser_prod___AEeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6680, LOCATE_parser_prod___AEeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label564: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6407, LOCATE_parser_prod___AEeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6627, LOCATE_parser_prod___AEeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i]) return;
+  return_label565: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEeExpr___init_aeeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6409, LOCATE_parser_prod___AEeExpr___init_aeeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6629, LOCATE_parser_prod___AEeExpr___init_aeeexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i]) return;
-  ((parser_prod___AEeExpr___empty_init_t)CALL( self,COLOR_parser_prod___AEeExpr___empty_init))( self, init_table /*YYY*/) /*AEeExpr::empty_init*/;
-  ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label566: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6425, LOCATE_parser_prod___AEeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6427); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6431); nit_exit(1);}
-      ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label549;
-  }
-  variable2 = ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEeExpr___replace_child, LOCATE_parser_prod, 6441); nit_exit(1);}
-      ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label549;
+void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6691, LOCATE_parser_prod___ANeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label549: while(false);
+  return_label567: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6450, LOCATE_parser_prod___AEeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6698, LOCATE_parser_prod___ANeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label568: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6460, LOCATE_parser_prod___AEeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEeExpr____n_expr( self) /*AEeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEeExpr____n_expr2( self) /*AEeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ANeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6724, LOCATE_parser_prod___ANeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6726); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6730); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label569;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6740); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label569;
   }
+  return_label569: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6471, LOCATE_parser_prod___ANeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ANeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6749, LOCATE_parser_prod___ANeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label570: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6478, LOCATE_parser_prod___ANeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6759, LOCATE_parser_prod___ANeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label571: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6486, LOCATE_parser_prod___ANeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6706, LOCATE_parser_prod___ANeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label572: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANeExpr___init_aneexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6488, LOCATE_parser_prod___ANeExpr___init_aneexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6708, LOCATE_parser_prod___ANeExpr___init_aneexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeExpr].i]) return;
-  ((parser_prod___ANeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ANeExpr___empty_init))( self, init_table /*YYY*/) /*ANeExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label573: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6504, LOCATE_parser_prod___ANeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6506); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6510); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label556;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANeExpr___replace_child, LOCATE_parser_prod, 6520); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label556;
+void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6770, LOCATE_parser_prod___ALtExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label556: while(false);
+  return_label574: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6529, LOCATE_parser_prod___ANeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6777, LOCATE_parser_prod___ALtExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label575: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6539, LOCATE_parser_prod___ANeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ALtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6803, LOCATE_parser_prod___ALtExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6805); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6809); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label576;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6819); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label576;
   }
+  return_label576: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6550, LOCATE_parser_prod___ALtExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ALtExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6828, LOCATE_parser_prod___ALtExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label577: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6557, LOCATE_parser_prod___ALtExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALtExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6838, LOCATE_parser_prod___ALtExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label578: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6565, LOCATE_parser_prod___ALtExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6785, LOCATE_parser_prod___ALtExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label579: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALtExpr___init_altexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6567, LOCATE_parser_prod___ALtExpr___init_altexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6787, LOCATE_parser_prod___ALtExpr___init_altexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtExpr].i]) return;
-  ((parser_prod___ALtExpr___empty_init_t)CALL( self,COLOR_parser_prod___ALtExpr___empty_init))( self, init_table /*YYY*/) /*ALtExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label580: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6583, LOCATE_parser_prod___ALtExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6585); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6589); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label563;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALtExpr___replace_child, LOCATE_parser_prod, 6599); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label563;
+void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6849, LOCATE_parser_prod___ALeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label563: while(false);
+  return_label581: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6608, LOCATE_parser_prod___ALtExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6856, LOCATE_parser_prod___ALeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label582: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6618, LOCATE_parser_prod___ALtExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ALeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6882, LOCATE_parser_prod___ALeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6884); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6888); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label583;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6898); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label583;
   }
+  return_label583: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6629, LOCATE_parser_prod___ALeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ALeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6907, LOCATE_parser_prod___ALeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label584: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6636, LOCATE_parser_prod___ALeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ALeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6917, LOCATE_parser_prod___ALeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label585: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6644, LOCATE_parser_prod___ALeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6864, LOCATE_parser_prod___ALeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label586: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ALeExpr___init_aleexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6646, LOCATE_parser_prod___ALeExpr___init_aleexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6866, LOCATE_parser_prod___ALeExpr___init_aleexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeExpr].i]) return;
-  ((parser_prod___ALeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ALeExpr___empty_init))( self, init_table /*YYY*/) /*ALeExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label587: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ALeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6662, LOCATE_parser_prod___ALeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6664); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6668); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label570;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ALeExpr___replace_child, LOCATE_parser_prod, 6678); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label570;
+void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6928, LOCATE_parser_prod___AGtExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label570: while(false);
+  return_label588: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6687, LOCATE_parser_prod___ALeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6935, LOCATE_parser_prod___AGtExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label589: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ALeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6697, LOCATE_parser_prod___ALeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AGtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 6961, LOCATE_parser_prod___AGtExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 6963); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6967); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label590;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 6977); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label590;
   }
+  return_label590: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6708, LOCATE_parser_prod___AGtExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AGtExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6986, LOCATE_parser_prod___AGtExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label591: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6715, LOCATE_parser_prod___AGtExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGtExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 6996, LOCATE_parser_prod___AGtExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label592: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6723, LOCATE_parser_prod___AGtExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 6943, LOCATE_parser_prod___AGtExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label593: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGtExpr___init_agtexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6725, LOCATE_parser_prod___AGtExpr___init_agtexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 6945, LOCATE_parser_prod___AGtExpr___init_agtexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtExpr].i]) return;
-  ((parser_prod___AGtExpr___empty_init_t)CALL( self,COLOR_parser_prod___AGtExpr___empty_init))( self, init_table /*YYY*/) /*AGtExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label594: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGtExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6741, LOCATE_parser_prod___AGtExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6743); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6747); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label577;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGtExpr___replace_child, LOCATE_parser_prod, 6757); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label577;
-  }
-  return_label577: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AGtExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6766, LOCATE_parser_prod___AGtExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7007, LOCATE_parser_prod___AGeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label595: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGtExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6776, LOCATE_parser_prod___AGtExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7014, LOCATE_parser_prod___AGeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  return_label596: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AGeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7040, LOCATE_parser_prod___AGeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7042); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7046); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label597;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7056); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label597;
   }
+  return_label597: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6787, LOCATE_parser_prod___AGeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AGeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7065, LOCATE_parser_prod___AGeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label598: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6794, LOCATE_parser_prod___AGeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AGeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7075, LOCATE_parser_prod___AGeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label599: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6802, LOCATE_parser_prod___AGeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7022, LOCATE_parser_prod___AGeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label600: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AGeExpr___init_ageexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6804, LOCATE_parser_prod___AGeExpr___init_ageexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7024, LOCATE_parser_prod___AGeExpr___init_ageexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeExpr].i]) return;
-  ((parser_prod___AGeExpr___empty_init_t)CALL( self,COLOR_parser_prod___AGeExpr___empty_init))( self, init_table /*YYY*/) /*AGeExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label601: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AGeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6820, LOCATE_parser_prod___AGeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 6822); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 6826); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label584;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AGeExpr___replace_child, LOCATE_parser_prod, 6836); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label584;
+void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7086, LOCATE_parser_prod___AIsaExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label584: while(false);
+  return_label602: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6845, LOCATE_parser_prod___AGeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7093, LOCATE_parser_prod___AIsaExpr___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label603: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AGeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6855, LOCATE_parser_prod___AGeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AIsaExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7119, LOCATE_parser_prod___AIsaExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7121); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7125); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIsaExpr____n_expr(variable[4]) /*AIsaExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIsaExpr____n_expr(variable[4]) /*AIsaExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label604;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7135); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIsaExpr____n_type(variable[4]) /*AIsaExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIsaExpr____n_type(variable[4]) /*AIsaExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label604;
   }
+  return_label604: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6866, LOCATE_parser_prod___AIsaExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AIsaExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7144, LOCATE_parser_prod___AIsaExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label605: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6873, LOCATE_parser_prod___AIsaExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIsaExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7154, LOCATE_parser_prod___AIsaExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label606: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIsaExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6881, LOCATE_parser_prod___AIsaExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7101, LOCATE_parser_prod___AIsaExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
+  return_label607: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIsaExpr___init_aisaexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6883, LOCATE_parser_prod___AIsaExpr___init_aisaexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7103, LOCATE_parser_prod___AIsaExpr___init_aisaexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i]) return;
-  ((parser_prod___AIsaExpr___empty_init_t)CALL( self,COLOR_parser_prod___AIsaExpr___empty_init))( self, init_table /*YYY*/) /*AIsaExpr::empty_init*/;
-  ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/ =  variable1 /*n_type*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label608: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIsaExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6899, LOCATE_parser_prod___AIsaExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 6901); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 6905); nit_exit(1);}
-      ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label591;
-  }
-  variable2 = ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIsaExpr___replace_child, LOCATE_parser_prod, 6915); nit_exit(1);}
-      ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label591;
+void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7165, LOCATE_parser_prod___APlusExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label591: while(false);
+  return_label609: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6924, LOCATE_parser_prod___AIsaExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7172, LOCATE_parser_prod___APlusExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label610: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIsaExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6934, LOCATE_parser_prod___AIsaExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIsaExpr____n_expr( self) /*AIsaExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIsaExpr____n_type( self) /*AIsaExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___APlusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7198, LOCATE_parser_prod___APlusExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7200); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7204); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label611;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7214); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label611;
   }
+  return_label611: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6945, LOCATE_parser_prod___APlusExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___APlusExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7223, LOCATE_parser_prod___APlusExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label612: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6952, LOCATE_parser_prod___APlusExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7233, LOCATE_parser_prod___APlusExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label613: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6960, LOCATE_parser_prod___APlusExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7180, LOCATE_parser_prod___APlusExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label614: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusExpr___init_aplusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6962, LOCATE_parser_prod___APlusExpr___init_aplusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7182, LOCATE_parser_prod___APlusExpr___init_aplusexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusExpr].i]) return;
-  ((parser_prod___APlusExpr___empty_init_t)CALL( self,COLOR_parser_prod___APlusExpr___empty_init))( self, init_table /*YYY*/) /*APlusExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label615: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 6978, LOCATE_parser_prod___APlusExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 6980); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 6984); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label598;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusExpr___replace_child, LOCATE_parser_prod, 6994); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label598;
+void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7244, LOCATE_parser_prod___AMinusExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label598: while(false);
+  return_label616: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7003, LOCATE_parser_prod___APlusExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7251, LOCATE_parser_prod___AMinusExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label617: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7013, LOCATE_parser_prod___APlusExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AMinusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7277, LOCATE_parser_prod___AMinusExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7279); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7283); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label618;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7293); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label618;
   }
+  return_label618: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7024, LOCATE_parser_prod___AMinusExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AMinusExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7302, LOCATE_parser_prod___AMinusExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label619: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7031, LOCATE_parser_prod___AMinusExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7312, LOCATE_parser_prod___AMinusExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label620: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7039, LOCATE_parser_prod___AMinusExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7259, LOCATE_parser_prod___AMinusExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label621: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusExpr___init_aminusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7041, LOCATE_parser_prod___AMinusExpr___init_aminusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7261, LOCATE_parser_prod___AMinusExpr___init_aminusexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusExpr].i]) return;
-  ((parser_prod___AMinusExpr___empty_init_t)CALL( self,COLOR_parser_prod___AMinusExpr___empty_init))( self, init_table /*YYY*/) /*AMinusExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label622: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7057, LOCATE_parser_prod___AMinusExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7059); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7063); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label605;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusExpr___replace_child, LOCATE_parser_prod, 7073); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label605;
+void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7323, LOCATE_parser_prod___AStarshipExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label605: while(false);
+  return_label623: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7082, LOCATE_parser_prod___AMinusExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7330, LOCATE_parser_prod___AStarshipExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label624: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7092, LOCATE_parser_prod___AMinusExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStarshipExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7356, LOCATE_parser_prod___AStarshipExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7358); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7362); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label625;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7372); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label625;
   }
+  return_label625: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7103, LOCATE_parser_prod___AStarshipExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AStarshipExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7381, LOCATE_parser_prod___AStarshipExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label626: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7110, LOCATE_parser_prod___AStarshipExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarshipExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7391, LOCATE_parser_prod___AStarshipExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label627: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7118, LOCATE_parser_prod___AStarshipExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7338, LOCATE_parser_prod___AStarshipExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label628: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarshipExpr___init_astarshipexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7120, LOCATE_parser_prod___AStarshipExpr___init_astarshipexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7340, LOCATE_parser_prod___AStarshipExpr___init_astarshipexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipExpr].i]) return;
-  ((parser_prod___AStarshipExpr___empty_init_t)CALL( self,COLOR_parser_prod___AStarshipExpr___empty_init))( self, init_table /*YYY*/) /*AStarshipExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label629: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarshipExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7136, LOCATE_parser_prod___AStarshipExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7138); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7142); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label612;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarshipExpr___replace_child, LOCATE_parser_prod, 7152); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label612;
+void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7402, LOCATE_parser_prod___AStarExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label612: while(false);
+  return_label630: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7161, LOCATE_parser_prod___AStarshipExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7409, LOCATE_parser_prod___AStarExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label631: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarshipExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7171, LOCATE_parser_prod___AStarshipExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStarExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7435, LOCATE_parser_prod___AStarExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7437); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7441); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label632;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7451); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label632;
   }
+  return_label632: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7182, LOCATE_parser_prod___AStarExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AStarExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7460, LOCATE_parser_prod___AStarExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label633: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7189, LOCATE_parser_prod___AStarExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStarExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7470, LOCATE_parser_prod___AStarExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label634: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7197, LOCATE_parser_prod___AStarExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7417, LOCATE_parser_prod___AStarExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label635: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStarExpr___init_astarexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7199, LOCATE_parser_prod___AStarExpr___init_astarexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7419, LOCATE_parser_prod___AStarExpr___init_astarexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarExpr].i]) return;
-  ((parser_prod___AStarExpr___empty_init_t)CALL( self,COLOR_parser_prod___AStarExpr___empty_init))( self, init_table /*YYY*/) /*AStarExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label636: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7215, LOCATE_parser_prod___AStarExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7217); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7221); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label619;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStarExpr___replace_child, LOCATE_parser_prod, 7231); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label619;
+void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7481, LOCATE_parser_prod___ASlashExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label619: while(false);
+  return_label637: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7240, LOCATE_parser_prod___AStarExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7488, LOCATE_parser_prod___ASlashExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label638: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7250, LOCATE_parser_prod___AStarExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ASlashExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7514, LOCATE_parser_prod___ASlashExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7516); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7520); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label639;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7530); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label639;
   }
+  return_label639: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7261, LOCATE_parser_prod___ASlashExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___ASlashExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7539, LOCATE_parser_prod___ASlashExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label640: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7268, LOCATE_parser_prod___ASlashExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASlashExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7549, LOCATE_parser_prod___ASlashExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label641: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7276, LOCATE_parser_prod___ASlashExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7496, LOCATE_parser_prod___ASlashExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label642: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASlashExpr___init_aslashexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7278, LOCATE_parser_prod___ASlashExpr___init_aslashexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7498, LOCATE_parser_prod___ASlashExpr___init_aslashexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashExpr].i]) return;
-  ((parser_prod___ASlashExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASlashExpr___empty_init))( self, init_table /*YYY*/) /*ASlashExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label643: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASlashExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7294, LOCATE_parser_prod___ASlashExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7296); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7300); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label626;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASlashExpr___replace_child, LOCATE_parser_prod, 7310); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label626;
+void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7560, LOCATE_parser_prod___APercentExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label626: while(false);
+  return_label644: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7319, LOCATE_parser_prod___ASlashExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7567, LOCATE_parser_prod___APercentExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label645: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASlashExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7329, LOCATE_parser_prod___ASlashExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___APercentExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7593, LOCATE_parser_prod___APercentExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7595); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7599); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label646;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7609); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ABinopExpr____n_expr2(variable[4]) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label646;
   }
+  return_label646: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7340, LOCATE_parser_prod___APercentExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7618, LOCATE_parser_prod___APercentExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label647: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7347, LOCATE_parser_prod___APercentExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APercentExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7628, LOCATE_parser_prod___APercentExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label648: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7355, LOCATE_parser_prod___APercentExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7575, LOCATE_parser_prod___APercentExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentExpr].i]) return;
-  ((parser_prod___ABinopExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABinopExpr___empty_init))( self, init_table /*YYY*/) /*ABinopExpr::empty_init*/;
+  return_label649: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APercentExpr___init_apercentexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7357, LOCATE_parser_prod___APercentExpr___init_apercentexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7577, LOCATE_parser_prod___APercentExpr___init_apercentexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentExpr].i]) return;
-  ((parser_prod___APercentExpr___empty_init_t)CALL( self,COLOR_parser_prod___APercentExpr___empty_init))( self, init_table /*YYY*/) /*APercentExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label650: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APercentExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7373, LOCATE_parser_prod___APercentExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7375); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7379); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label633;
-  }
-  variable2 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APercentExpr___replace_child, LOCATE_parser_prod, 7389); nit_exit(1);}
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label633;
+void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7646, LOCATE_parser_prod___AUminusExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label633: while(false);
+  return_label651: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7398, LOCATE_parser_prod___APercentExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7639, LOCATE_parser_prod___AUminusExpr___n_minus__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label652: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APercentExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7408, LOCATE_parser_prod___APercentExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ABinopExpr____n_expr2( self) /*ABinopExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AUminusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 7672, LOCATE_parser_prod___AUminusExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7674); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7678); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AUminusExpr____n_minus(variable[4]) /*AUminusExpr::_n_minus*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AUminusExpr____n_minus(variable[4]) /*AUminusExpr::_n_minus*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label653;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7688); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label653;
   }
+  return_label653: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___n_minus__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7419, LOCATE_parser_prod___AUminusExpr___n_minus__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUminusExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7697, LOCATE_parser_prod___AUminusExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label654: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7426, LOCATE_parser_prod___AUminusExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AUminusExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7707, LOCATE_parser_prod___AUminusExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label655: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUminusExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7434, LOCATE_parser_prod___AUminusExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 7654, LOCATE_parser_prod___AUminusExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUminusExpr].i]) return;
-  ((parser_prod___ASendExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASendExpr___empty_init))( self, init_table /*YYY*/) /*ASendExpr::empty_init*/;
+  return_label656: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AUminusExpr___init_auminusexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7436, LOCATE_parser_prod___AUminusExpr___init_auminusexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 7656, LOCATE_parser_prod___AUminusExpr___init_auminusexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUminusExpr].i]) return;
-  ((parser_prod___AUminusExpr___empty_init_t)CALL( self,COLOR_parser_prod___AUminusExpr___empty_init))( self, init_table /*YYY*/) /*AUminusExpr::empty_init*/;
-  ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/ =  variable0 /*n_minus*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_minus*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_minus*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_minus*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_minus*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_minus*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_minus*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_minus*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_minus*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label657: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AUminusExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AUminusExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7452, LOCATE_parser_prod___AUminusExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7454); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7458); nit_exit(1);}
-      ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label640;
-  }
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AUminusExpr___replace_child, LOCATE_parser_prod, 7468); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label640;
-  }
-  return_label640: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUminusExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7477, LOCATE_parser_prod___AUminusExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AUminusExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7487, LOCATE_parser_prod___AUminusExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AUminusExpr____n_minus( self) /*AUminusExpr::_n_minus*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
 void parser_prod___ANewExpr___n_kwnew__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7498, LOCATE_parser_prod___ANewExpr___n_kwnew__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7505, LOCATE_parser_prod___ANewExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7718, LOCATE_parser_prod___ANewExpr___n_kwnew__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label658: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7512, LOCATE_parser_prod___ANewExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANewExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7725, LOCATE_parser_prod___ANewExpr___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label659: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANewExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7520, LOCATE_parser_prod___ANewExpr___empty_init};
+void parser_prod___ANewExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7732, LOCATE_parser_prod___ANewExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___ANewExpr___init_anewexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7522, LOCATE_parser_prod___ANewExpr___init_anewexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i]) return;
-  ((parser_prod___ANewExpr___empty_init_t)CALL( self,COLOR_parser_prod___ANewExpr___empty_init))( self, init_table /*YYY*/) /*ANewExpr::empty_init*/;
-  ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/ =  variable0 /*n_kwnew*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwnew*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwnew*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnew*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwnew*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnew*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwnew*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwnew*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwnew*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/ =  variable1 /*n_type*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_type*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/ =  variable2 /*n_id*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable4 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable3 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable3 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable5)) break; /*for*/
-    variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
-    variable6 = TAG_Bool(( variable5 /*n*/==NIT_NULL) || VAL_ISA( variable5 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___init_anewexpr, LOCATE_parser_prod, 7544); nit_exit(1);}
-    variable6 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable6,COLOR_abstract_collection___SimpleCollection___add))(variable6,  variable5 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PNode::parent=*/;
-    continue_648: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_648: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label660: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7550, LOCATE_parser_prod___ANewExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7552); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7556); nit_exit(1);}
-      ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label649;
-  }
-  variable2 = ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7566); nit_exit(1);}
-      ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label649;
-  }
-  variable2 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7576); nit_exit(1);}
-      ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label649;
-  }
-  variable2 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 7770, LOCATE_parser_prod___ANewExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7772); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7776); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_kwnew(variable[4]) /*ANewExpr::_n_kwnew*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_kwnew(variable[4]) /*ANewExpr::_n_kwnew*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label661;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7786); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_type(variable[4]) /*ANewExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_type(variable[4]) /*ANewExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label661;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7796); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_id(variable[4]) /*ANewExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANewExpr____n_id(variable[4]) /*ANewExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label661;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANewExpr___replace_child, LOCATE_parser_prod, 7586); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 7806); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label649;
+      goto return_label661;
     }
-    continue_650: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_662: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_650: while(0);
-  return_label649: while(false);
+  break_662: while(0);
+  return_label661: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7597, LOCATE_parser_prod___ANewExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 7817, LOCATE_parser_prod___ANewExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_652: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_664: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_652: while(0);
+  break_664: while(0);
+  return_label663: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANewExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7613, LOCATE_parser_prod___ANewExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_kwnew( self) /*ANewExpr::_n_kwnew*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_type( self) /*ANewExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANewExpr____n_id( self) /*ANewExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 7833, LOCATE_parser_prod___ANewExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ANewExpr____n_args( self) /*ANewExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_654: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_666: while(0);
   }
-  break_654: while(0);
+  break_666: while(0);
+  return_label665: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7634, LOCATE_parser_prod___AAttrExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANewExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7740, LOCATE_parser_prod___ANewExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i]) return;
+  return_label667: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7641, LOCATE_parser_prod___AAttrExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANewExpr___init_anewexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7742, LOCATE_parser_prod___ANewExpr___init_anewexpr};
+  val_t variable[10];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 7764); 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*/;
+    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=*/;
+    continue_669: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_669: while(0);
+  return_label668: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANewExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7649, LOCATE_parser_prod___AAttrExpr___empty_init};
+void parser_prod___AAttrExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7854, LOCATE_parser_prod___AAttrExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label670: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrExpr___init_aattrexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7651, LOCATE_parser_prod___AAttrExpr___init_aattrexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AAttrExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7861, LOCATE_parser_prod___AAttrExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
-  ((parser_prod___AAttrExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAttrExpr___empty_init))( self, init_table /*YYY*/) /*AAttrExpr::empty_init*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
+  return_label671: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7667, LOCATE_parser_prod___AAttrExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7669); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7673); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label659;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrExpr___replace_child, LOCATE_parser_prod, 7683); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label659;
+  struct trace_t trace = {NULL, NULL, 7887, LOCATE_parser_prod___AAttrExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7889); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7893); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label672;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7903); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label672;
   }
-  return_label659: while(false);
+  return_label672: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7692, LOCATE_parser_prod___AAttrExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7912, LOCATE_parser_prod___AAttrExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label673: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7702, LOCATE_parser_prod___AAttrExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 7922, LOCATE_parser_prod___AAttrExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label674: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7713, LOCATE_parser_prod___AAttrAssignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7869, LOCATE_parser_prod___AAttrExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i]) return;
+  return_label675: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7720, LOCATE_parser_prod___AAttrAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrExpr___init_aattrexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7871, LOCATE_parser_prod___AAttrExpr___init_aattrexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label676: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7727, LOCATE_parser_prod___AAttrAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7933, LOCATE_parser_prod___AAttrAssignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label677: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7734, LOCATE_parser_prod___AAttrAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrAssignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7940, LOCATE_parser_prod___AAttrAssignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label678: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7742, LOCATE_parser_prod___AAttrAssignExpr___empty_init};
+void parser_prod___AAttrAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7947, LOCATE_parser_prod___AAttrAssignExpr___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label679: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7744, LOCATE_parser_prod___AAttrAssignExpr___init_aattrassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
-  ((parser_prod___AAttrAssignExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAttrAssignExpr___empty_init))( self, init_table /*YYY*/) /*AAttrAssignExpr::empty_init*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable2 /*n_assign*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable3 /*n_value*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___AAttrAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 7954, LOCATE_parser_prod___AAttrAssignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
+  return_label680: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7770, LOCATE_parser_prod___AAttrAssignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 7772); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 7776); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label668;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 7786); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label668;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 7796); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label668;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrAssignExpr___replace_child, LOCATE_parser_prod, 7806); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label668;
+  struct trace_t trace = {NULL, NULL, 7990, LOCATE_parser_prod___AAttrAssignExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 7992); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 7996); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label681;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8006); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label681;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8016); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label681;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8026); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label681;
   }
-  return_label668: while(false);
+  return_label681: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7815, LOCATE_parser_prod___AAttrAssignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 8035, LOCATE_parser_prod___AAttrAssignExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label682: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7831, LOCATE_parser_prod___AAttrAssignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 8051, LOCATE_parser_prod___AAttrAssignExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label683: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7848, LOCATE_parser_prod___AAttrReassignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7962, LOCATE_parser_prod___AAttrAssignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i]) return;
+  return_label684: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7855, LOCATE_parser_prod___AAttrReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 7964, LOCATE_parser_prod___AAttrAssignExpr___init_aattrassignexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
   }
+  return_label685: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7862, LOCATE_parser_prod___AAttrReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8068, LOCATE_parser_prod___AAttrReassignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label686: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7869, LOCATE_parser_prod___AAttrReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrReassignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8075, LOCATE_parser_prod___AAttrReassignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label687: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7877, LOCATE_parser_prod___AAttrReassignExpr___empty_init};
+void parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8082, LOCATE_parser_prod___AAttrReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label688: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7879, LOCATE_parser_prod___AAttrReassignExpr___init_aattrreassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
-  ((parser_prod___AAttrReassignExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAttrReassignExpr___empty_init))( self, init_table /*YYY*/) /*AAttrReassignExpr::empty_init*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable2 /*n_assign_op*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_assign_op*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable3 /*n_value*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___AAttrReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8089, LOCATE_parser_prod___AAttrReassignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
+  return_label689: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 7905, LOCATE_parser_prod___AAttrReassignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 7907); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 7911); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label677;
-  }
-  variable2 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 7921); nit_exit(1);}
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label677;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 7931); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label677;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAttrReassignExpr___replace_child, LOCATE_parser_prod, 7941); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label677;
+  struct trace_t trace = {NULL, NULL, 8125, LOCATE_parser_prod___AAttrReassignExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8127); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8131); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_expr(variable[4]) /*AAttrFormExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label690;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8141); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAttrFormExpr____n_id(variable[4]) /*AAttrFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label690;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8151); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label690;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8161); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label690;
   }
-  return_label677: while(false);
+  return_label690: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7950, LOCATE_parser_prod___AAttrReassignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 8170, LOCATE_parser_prod___AAttrReassignExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label691: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAttrReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7966, LOCATE_parser_prod___AAttrReassignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_expr( self) /*AAttrFormExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAttrFormExpr____n_id( self) /*AAttrFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  struct trace_t trace = {NULL, NULL, 8186, LOCATE_parser_prod___AAttrReassignExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label692: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7983, LOCATE_parser_prod___ACallExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8097, LOCATE_parser_prod___AAttrReassignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i]) return;
+  return_label693: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7990, LOCATE_parser_prod___ACallExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8099, LOCATE_parser_prod___AAttrReassignExpr___init_aattrreassignexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label694: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAttrReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7998, LOCATE_parser_prod___ACallExpr___empty_init};
+void parser_prod___ACallExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8203, LOCATE_parser_prod___ACallExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label695: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallExpr___init_acallexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8000, LOCATE_parser_prod___ACallExpr___init_acallexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
+void parser_prod___ACallExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8210, LOCATE_parser_prod___ACallExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i]) return;
-  ((parser_prod___ACallExpr___empty_init_t)CALL( self,COLOR_parser_prod___ACallExpr___empty_init))( self, init_table /*YYY*/) /*ACallExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable3 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
-    variable5 = TAG_Bool(( variable4 /*n*/==NIT_NULL) || VAL_ISA( variable4 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___init_acallexpr, LOCATE_parser_prod, 8017); nit_exit(1);}
-    variable5 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PNode::parent=*/;
-    continue_684: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
-  }
-  break_684: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label696: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8023, LOCATE_parser_prod___ACallExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8025); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8029); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label685;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8039); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label685;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8250, LOCATE_parser_prod___ACallExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8252); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8256); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label697;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8266); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label697;
+  }
+  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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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, 8276); 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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label697;
+    }
+    continue_698: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_698: 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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallExpr___replace_child, LOCATE_parser_prod, 8049); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8288); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label685;
+      goto return_label697;
     }
-    continue_686: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_699: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_686: while(0);
-  return_label685: while(false);
+  break_699: while(0);
+  return_label697: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8060, LOCATE_parser_prod___ACallExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8299, LOCATE_parser_prod___ACallExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_701: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_701: 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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_688: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_702: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_688: while(0);
+  break_702: while(0);
+  return_label700: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8073, LOCATE_parser_prod___ACallExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8315, LOCATE_parser_prod___ACallExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_690: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_704: while(0);
+  }
+  break_704: 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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_705: while(0);
   }
-  break_690: while(0);
+  break_705: while(0);
+  return_label703: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8091, LOCATE_parser_prod___ACallAssignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8218, LOCATE_parser_prod___ACallExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i]) return;
+  return_label706: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8098, LOCATE_parser_prod___ACallAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallExpr___init_acallexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8220, LOCATE_parser_prod___ACallExpr___init_acallexpr};
+  val_t variable[10];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8238); 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*/;
+    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=*/;
+    continue_708: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_708: 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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8244); 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*/;
+    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=*/;
+    continue_709: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_709: while(0);
+  return_label707: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8105, LOCATE_parser_prod___ACallAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8340, LOCATE_parser_prod___ACallAssignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label710: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8112, LOCATE_parser_prod___ACallAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallAssignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8347, LOCATE_parser_prod___ACallAssignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label711: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8120, LOCATE_parser_prod___ACallAssignExpr___empty_init};
+void parser_prod___ACallAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8354, LOCATE_parser_prod___ACallAssignExpr___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label712: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallAssignExpr___init_acallassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8122, LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-    val_t variable6;
-    val_t variable7;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
-  ((parser_prod___ACallAssignExpr___empty_init_t)CALL( self,COLOR_parser_prod___ACallAssignExpr___empty_init))( self, init_table /*YYY*/) /*ACallAssignExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable5 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/ = variable5;
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable6 = ((array___ArrayIterator___is_ok_t)CALL(variable5,COLOR_abstract_collection___Iterator___is_ok))(variable5) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable6)) break; /*for*/
-    variable6 = ((array___ArrayIterator___item_t)CALL(variable5,COLOR_abstract_collection___Iterator___item))(variable5) /*ArrayIterator::item*/;
-    variable7 = TAG_Bool(( variable6 /*n*/==NIT_NULL) || VAL_ISA( variable6 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr, LOCATE_parser_prod, 8141); nit_exit(1);}
-    variable7 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable7,COLOR_abstract_collection___SimpleCollection___add))(variable7,  variable6 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n*/,  self) /*PNode::parent=*/;
-    continue_697: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
-  }
-  break_697: while(0);
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable3 /*n_assign*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable4 /*n_value*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___ACallAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8361, LOCATE_parser_prod___ACallAssignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
+  return_label713: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8155, LOCATE_parser_prod___ACallAssignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8157); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8161); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label698;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8171); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label698;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8404, LOCATE_parser_prod___ACallAssignExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8406); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8410); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label714;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8420); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label714;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8181); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8430); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label698;
-    }
-    continue_699: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_699: while(0);
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8193); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable1 /*new_child*/;
+      goto return_label714;
+    }
+    continue_715: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_715: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8442); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label698;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallAssignExpr___replace_child, LOCATE_parser_prod, 8203); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable1 /*new_child*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label714;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8452); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label698;
+    goto return_label714;
   }
-  return_label698: while(false);
+  return_label714: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8212, LOCATE_parser_prod___ACallAssignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8461, LOCATE_parser_prod___ACallAssignExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_701: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_701: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_717: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_717: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label716: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8231, LOCATE_parser_prod___ACallAssignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8480, LOCATE_parser_prod___ACallAssignExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_703: while(0);
-  }
-  break_703: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_719: while(0);
+  }
+  break_719: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label718: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8255, LOCATE_parser_prod___ACallReassignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8369, LOCATE_parser_prod___ACallAssignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i]) return;
+  return_label720: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8262, LOCATE_parser_prod___ACallReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallAssignExpr___init_acallassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8371, LOCATE_parser_prod___ACallAssignExpr___init_acallassignexpr};
+  val_t variable[11];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[8] = ((array___ArrayIterator___is_ok_t)CALL(variable[7],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8390); 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*/;
+    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=*/;
+    continue_722: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[7],COLOR_abstract_collection___Iterator___next))(variable[7]) /*ArrayIterator::next*/;
+  }
+  break_722: 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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label721: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8269, LOCATE_parser_prod___ACallReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8504, LOCATE_parser_prod___ACallReassignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label723: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8276, LOCATE_parser_prod___ACallReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallReassignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8511, LOCATE_parser_prod___ACallReassignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label724: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8284, LOCATE_parser_prod___ACallReassignExpr___empty_init};
+void parser_prod___ACallReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8518, LOCATE_parser_prod___ACallReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label725: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8286, LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-    val_t variable6;
-    val_t variable7;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable4 =  param4;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
-  ((parser_prod___ACallReassignExpr___empty_init_t)CALL( self,COLOR_parser_prod___ACallReassignExpr___empty_init))( self, init_table /*YYY*/) /*ACallReassignExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*n_id*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  variable5 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/ = variable5;
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable6 = ((array___ArrayIterator___is_ok_t)CALL(variable5,COLOR_abstract_collection___Iterator___is_ok))(variable5) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable6)) break; /*for*/
-    variable6 = ((array___ArrayIterator___item_t)CALL(variable5,COLOR_abstract_collection___Iterator___item))(variable5) /*ArrayIterator::item*/;
-    variable7 = TAG_Bool(( variable6 /*n*/==NIT_NULL) || VAL_ISA( variable6 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr, LOCATE_parser_prod, 8305); nit_exit(1);}
-    variable7 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable7,COLOR_abstract_collection___SimpleCollection___add))(variable7,  variable6 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable6 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable6 /*n*/,  self) /*PNode::parent=*/;
-    continue_710: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
-  }
-  break_710: while(0);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable3 /*n_assign_op*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_assign_op*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable4 /*n_value*/;
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable4 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable4 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable5)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___ACallReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8525, LOCATE_parser_prod___ACallReassignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
+  return_label726: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8319, LOCATE_parser_prod___ACallReassignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8321); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8325); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label711;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8335); nit_exit(1);}
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label711;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8568, LOCATE_parser_prod___ACallReassignExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8570); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8574); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label727;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8584); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACallFormExpr____n_id(variable[4]) /*ACallFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label727;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8345); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8594); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label711;
-    }
-    continue_712: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_712: while(0);
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8357); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+      goto return_label727;
+    }
+    continue_728: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_728: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8606); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label711;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACallReassignExpr___replace_child, LOCATE_parser_prod, 8367); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable1 /*new_child*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label727;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8616); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label711;
+    goto return_label727;
   }
-  return_label711: while(false);
+  return_label727: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8376, LOCATE_parser_prod___ACallReassignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8625, LOCATE_parser_prod___ACallReassignExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_714: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_714: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_730: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_730: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label729: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACallReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8395, LOCATE_parser_prod___ACallReassignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACallFormExpr____n_id( self) /*ACallFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8644, LOCATE_parser_prod___ACallReassignExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ACallFormExpr____n_args( self) /*ACallFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_716: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_732: while(0);
   }
-  break_716: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_732: 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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label731: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8419, LOCATE_parser_prod___ASuperExpr___n_qualified__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8533, LOCATE_parser_prod___ACallReassignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i]) return;
+  return_label733: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8426, LOCATE_parser_prod___ASuperExpr___n_kwsuper__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, val_t  param4, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8535, LOCATE_parser_prod___ACallReassignExpr___init_acallreassignexpr};
+  val_t variable[11];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  variable[5] =  param4;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[8] = ((array___ArrayIterator___is_ok_t)CALL(variable[7],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8554); 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*/;
+    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=*/;
+    continue_735: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[7],COLOR_abstract_collection___Iterator___next))(variable[7]) /*ArrayIterator::next*/;
+  }
+  break_735: 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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label734: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACallReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8434, LOCATE_parser_prod___ASuperExpr___empty_init};
+void parser_prod___ASuperExpr___n_qualified__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8668, LOCATE_parser_prod___ASuperExpr___n_qualified__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label736: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperExpr___init_asuperexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8436, LOCATE_parser_prod___ASuperExpr___init_asuperexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
-  ((parser_prod___ASuperExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASuperExpr___empty_init))( self, init_table /*YYY*/) /*ASuperExpr::empty_init*/;
-  ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/ =  variable0 /*n_qualified*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_qualified*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_qualified*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_qualified*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_qualified*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_qualified*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_qualified*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_qualified*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_qualified*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/ =  variable1 /*n_kwsuper*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwsuper*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwsuper*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwsuper*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwsuper*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwsuper*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwsuper*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwsuper*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwsuper*/,  self) /*PNode::parent=*/;
-  }
-  variable3 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
-    variable5 = TAG_Bool(( variable4 /*n*/==NIT_NULL) || VAL_ISA( variable4 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___init_asuperexpr, LOCATE_parser_prod, 8453); nit_exit(1);}
-    variable5 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PNode::parent=*/;
-    continue_721: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
-  }
-  break_721: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
+void parser_prod___ASuperExpr___n_kwsuper__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8675, LOCATE_parser_prod___ASuperExpr___n_kwsuper__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label737: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8459, LOCATE_parser_prod___ASuperExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8461); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8465); nit_exit(1);}
-      ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label722;
-  }
-  variable2 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8475); nit_exit(1);}
-      ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label722;
-  }
-  variable2 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8708, LOCATE_parser_prod___ASuperExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8710); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8714); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperExpr____n_qualified(variable[4]) /*ASuperExpr::_n_qualified*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperExpr____n_qualified(variable[4]) /*ASuperExpr::_n_qualified*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label738;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8724); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[4]) /*ASuperExpr::_n_kwsuper*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASuperExpr____n_kwsuper(variable[4]) /*ASuperExpr::_n_kwsuper*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label738;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperExpr___replace_child, LOCATE_parser_prod, 8485); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8734); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label722;
+      goto return_label738;
     }
-    continue_723: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_739: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_723: while(0);
-  return_label722: while(false);
+  break_739: while(0);
+  return_label738: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8496, LOCATE_parser_prod___ASuperExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8745, LOCATE_parser_prod___ASuperExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_725: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_741: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_725: while(0);
+  break_741: while(0);
+  return_label740: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8509, LOCATE_parser_prod___ASuperExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_qualified( self) /*ASuperExpr::_n_qualified*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASuperExpr____n_kwsuper( self) /*ASuperExpr::_n_kwsuper*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8758, LOCATE_parser_prod___ASuperExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ASuperExpr____n_args( self) /*ASuperExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_727: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_743: while(0);
   }
-  break_727: while(0);
+  break_743: while(0);
+  return_label742: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8527, LOCATE_parser_prod___AInitExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8683, LOCATE_parser_prod___ASuperExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i]) return;
+  return_label744: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8534, LOCATE_parser_prod___AInitExpr___n_kwinit__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperExpr___init_asuperexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8685, LOCATE_parser_prod___ASuperExpr___init_asuperexpr};
+  val_t variable[9];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8702); 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*/;
+    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=*/;
+    continue_746: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
   }
+  break_746: while(0);
+  return_label745: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8542, LOCATE_parser_prod___AInitExpr___empty_init};
+void parser_prod___AInitExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8776, LOCATE_parser_prod___AInitExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i]) return;
-  ((parser_prod___ASendExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASendExpr___empty_init))( self, init_table /*YYY*/) /*ASendExpr::empty_init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label747: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AInitExpr___init_ainitexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8544, LOCATE_parser_prod___AInitExpr___init_ainitexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-    val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i]) return;
-  ((parser_prod___AInitExpr___empty_init_t)CALL( self,COLOR_parser_prod___AInitExpr___empty_init))( self, init_table /*YYY*/) /*AInitExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/ =  variable1 /*n_kwinit*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwinit*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwinit*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwinit*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwinit*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwinit*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwinit*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwinit*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwinit*/,  self) /*PNode::parent=*/;
-  }
-  variable3 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/ = variable3;
-  variable3 = ((array___AbstractArray___iterator_t)CALL( variable2 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable4 = ((array___ArrayIterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((array___ArrayIterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*ArrayIterator::item*/;
-    variable5 = TAG_Bool(( variable4 /*n*/==NIT_NULL) || VAL_ISA( variable4 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___init_ainitexpr, LOCATE_parser_prod, 8561); nit_exit(1);}
-    variable5 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5,  variable4 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable4 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable4 /*n*/,  self) /*PNode::parent=*/;
-    continue_732: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*ArrayIterator::next*/;
+void parser_prod___AInitExpr___n_kwinit__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8783, LOCATE_parser_prod___AInitExpr___n_kwinit__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  break_732: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
+  return_label748: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8567, LOCATE_parser_prod___AInitExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8569); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8573); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label733;
-  }
-  variable2 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8583); nit_exit(1);}
-      ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label733;
-  }
-  variable2 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8816, LOCATE_parser_prod___AInitExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8818); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8822); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label749;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8832); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AInitExpr____n_kwinit(variable[4]) /*AInitExpr::_n_kwinit*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AInitExpr____n_kwinit(variable[4]) /*AInitExpr::_n_kwinit*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label749;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AInitExpr___replace_child, LOCATE_parser_prod, 8593); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8842); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label733;
+      goto return_label749;
     }
-    continue_734: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_750: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_734: while(0);
-  return_label733: while(false);
+  break_750: while(0);
+  return_label749: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8604, LOCATE_parser_prod___AInitExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8853, LOCATE_parser_prod___AInitExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_736: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_752: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_736: while(0);
+  break_752: while(0);
+  return_label751: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AInitExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8617, LOCATE_parser_prod___AInitExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AInitExpr____n_kwinit( self) /*AInitExpr::_n_kwinit*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8866, LOCATE_parser_prod___AInitExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AInitExpr____n_args( self) /*AInitExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_738: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_754: while(0);
   }
-  break_738: while(0);
+  break_754: while(0);
+  return_label753: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8635, LOCATE_parser_prod___ABraExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AInitExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8791, LOCATE_parser_prod___AInitExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i]) return;
+  return_label755: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8643, LOCATE_parser_prod___ABraExpr___empty_init};
+void parser_prod___AInitExpr___init_ainitexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8793, LOCATE_parser_prod___AInitExpr___init_ainitexpr};
+  val_t variable[9];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8810); 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*/;
+    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=*/;
+    continue_757: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+  }
+  break_757: while(0);
+  return_label756: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AInitExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraExpr___init_abraexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8645, LOCATE_parser_prod___ABraExpr___init_abraexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___ABraExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8884, LOCATE_parser_prod___ABraExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
-  ((parser_prod___ABraExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABraExpr___empty_init))( self, init_table /*YYY*/) /*ABraExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  variable2 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = TAG_Bool(( variable3 /*n*/==NIT_NULL) || VAL_ISA( variable3 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___init_abraexpr, LOCATE_parser_prod, 8657); nit_exit(1);}
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable3 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PNode::parent=*/;
-    continue_742: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_742: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label758: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8663, LOCATE_parser_prod___ABraExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8665); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8669); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label743;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8919, LOCATE_parser_prod___ABraExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 8921); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 8925); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label759;
+  }
+  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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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, 8935); 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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label759;
+    }
+    continue_760: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_760: 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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraExpr___replace_child, LOCATE_parser_prod, 8679); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 8947); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label743;
+      goto return_label759;
     }
-    continue_744: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_761: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_744: while(0);
-  return_label743: while(false);
+  break_761: while(0);
+  return_label759: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8690, LOCATE_parser_prod___ABraExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 8958, LOCATE_parser_prod___ABraExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_746: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_763: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_763: 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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_764: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_746: while(0);
+  break_764: while(0);
+  return_label762: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8700, LOCATE_parser_prod___ABraExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 8971, LOCATE_parser_prod___ABraExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_748: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_766: while(0);
+  }
+  break_766: 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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_767: while(0);
   }
-  break_748: while(0);
+  break_767: while(0);
+  return_label765: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8715, LOCATE_parser_prod___ABraAssignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8892, LOCATE_parser_prod___ABraExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i]) return;
+  return_label768: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8722, LOCATE_parser_prod___ABraAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraExpr___init_abraexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 8894, LOCATE_parser_prod___ABraExpr___init_abraexpr};
+  val_t variable[9];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8907); 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*/;
+    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=*/;
+    continue_770: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
   }
+  break_770: 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*/;
+  while (true) { /*for*/
+    variable[6] = ((array___ArrayIterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(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[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, 8913); 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*/;
+    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=*/;
+    continue_771: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*ArrayIterator::next*/;
+  }
+  break_771: while(0);
+  return_label769: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8729, LOCATE_parser_prod___ABraAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 8993, LOCATE_parser_prod___ABraAssignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label772: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8737, LOCATE_parser_prod___ABraAssignExpr___empty_init};
+void parser_prod___ABraAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9000, LOCATE_parser_prod___ABraAssignExpr___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label773: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraAssignExpr___init_abraassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8739, LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
-  ((parser_prod___ABraAssignExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABraAssignExpr___empty_init))( self, init_table /*YYY*/) /*ABraAssignExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  variable4 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable5)) break; /*for*/
-    variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
-    variable6 = TAG_Bool(( variable5 /*n*/==NIT_NULL) || VAL_ISA( variable5 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr, LOCATE_parser_prod, 8753); nit_exit(1);}
-    variable6 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable6,COLOR_abstract_collection___SimpleCollection___add))(variable6,  variable5 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PNode::parent=*/;
-    continue_754: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_754: while(0);
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable2 /*n_assign*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable3 /*n_value*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___ABraAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9007, LOCATE_parser_prod___ABraAssignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
+  return_label774: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8767, LOCATE_parser_prod___ABraAssignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 8769); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 8773); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label755;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9045, LOCATE_parser_prod___ABraAssignExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9047); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9051); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label775;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 8783); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 9061); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label755;
-    }
-    continue_756: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_756: while(0);
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 8795); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable1 /*new_child*/;
+      goto return_label775;
+    }
+    continue_776: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_776: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9073); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label755;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraAssignExpr___replace_child, LOCATE_parser_prod, 8805); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable1 /*new_child*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label775;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9083); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label755;
+    goto return_label775;
   }
-  return_label755: while(false);
+  return_label775: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8814, LOCATE_parser_prod___ABraAssignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9092, LOCATE_parser_prod___ABraAssignExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_758: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_758: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_778: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_778: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label777: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8830, LOCATE_parser_prod___ABraAssignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 9108, LOCATE_parser_prod___ABraAssignExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_760: while(0);
-  }
-  break_760: while(0);
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_780: while(0);
+  }
+  break_780: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label779: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8851, LOCATE_parser_prod___ABraReassignExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9015, LOCATE_parser_prod___ABraAssignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i]) return;
+  return_label781: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8858, LOCATE_parser_prod___ABraReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraAssignExpr___init_abraassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9017, LOCATE_parser_prod___ABraAssignExpr___init_abraassignexpr};
+  val_t variable[10];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 9031); 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*/;
+    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=*/;
+    continue_783: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_783: 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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label782: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8865, LOCATE_parser_prod___ABraReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraReassignExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9129, LOCATE_parser_prod___ABraReassignExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label784: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8873, LOCATE_parser_prod___ABraReassignExpr___empty_init};
+void parser_prod___ABraReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9136, LOCATE_parser_prod___ABraReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label785: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8875, LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
-  ((parser_prod___ABraReassignExpr___empty_init_t)CALL( self,COLOR_parser_prod___ABraReassignExpr___empty_init))( self, init_table /*YYY*/) /*ABraReassignExpr::empty_init*/;
-  ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  variable4 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/ = variable4;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable1 /*n_args*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*n_args*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable5)) break; /*for*/
-    variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
-    variable6 = TAG_Bool(( variable5 /*n*/==NIT_NULL) || VAL_ISA( variable5 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr, LOCATE_parser_prod, 8889); nit_exit(1);}
-    variable6 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable6,COLOR_abstract_collection___SimpleCollection___add))(variable6,  variable5 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable5 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable5 /*n*/,  self) /*PNode::parent=*/;
-    continue_766: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_766: while(0);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable2 /*n_assign_op*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_assign_op*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable3 /*n_value*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable3 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable3 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n_value*/,  self) /*PNode::parent=*/;
+void parser_prod___ABraReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9143, LOCATE_parser_prod___ABraReassignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
+  return_label786: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 8903, LOCATE_parser_prod___ABraReassignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 8905); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 8909); nit_exit(1);}
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label767;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9181, LOCATE_parser_prod___ABraReassignExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9183); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9187); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASendExpr____n_expr(variable[4]) /*ASendExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label787;
+  }
+  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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 8919); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 9197); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label767;
-    }
-    continue_768: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_768: while(0);
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 8931); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+      goto return_label787;
+    }
+    continue_788: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_788: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9209); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label767;
-  }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ABraReassignExpr___replace_child, LOCATE_parser_prod, 8941); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable1 /*new_child*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label787;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9219); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label767;
+    goto return_label787;
   }
-  return_label767: while(false);
+  return_label787: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8950, LOCATE_parser_prod___ABraReassignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  struct trace_t trace = {NULL, NULL, 9228, LOCATE_parser_prod___ABraReassignExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_770: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
-  }
-  break_770: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_790: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_790: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label789: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ABraReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8966, LOCATE_parser_prod___ABraReassignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASendExpr____n_expr( self) /*ASendExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 9244, LOCATE_parser_prod___ABraReassignExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ABraFormExpr____n_args( self) /*ABraFormExpr::_n_args*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_772: while(0);
-  }
-  break_772: while(0);
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_792: while(0);
+  }
+  break_792: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label791: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8987, LOCATE_parser_prod___AVarExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ABraReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9151, LOCATE_parser_prod___ABraReassignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i]) return;
+  return_label793: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8995, LOCATE_parser_prod___AVarExpr___empty_init};
+void parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9153, LOCATE_parser_prod___ABraReassignExpr___init_abrareassignexpr};
+  val_t variable[10];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 9167); 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*/;
+    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=*/;
+    continue_795: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_795: 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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label794: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ABraReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarExpr___init_avarexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8997, LOCATE_parser_prod___AVarExpr___init_avarexpr};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9265, LOCATE_parser_prod___AVarExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
-  ((parser_prod___AVarExpr___empty_init_t)CALL( self,COLOR_parser_prod___AVarExpr___empty_init))( self, init_table /*YYY*/) /*AVarExpr::empty_init*/;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
+  return_label796: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9008, LOCATE_parser_prod___AVarExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9010); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarExpr___replace_child, LOCATE_parser_prod, 9014); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9286, LOCATE_parser_prod___AVarExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9288); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9292); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
     }
-    goto return_label776;
+    goto return_label797;
   }
-  return_label776: while(false);
+  return_label797: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9023, LOCATE_parser_prod___AVarExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9301, LOCATE_parser_prod___AVarExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label798: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9030, LOCATE_parser_prod___AVarExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9308, LOCATE_parser_prod___AVarExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label799: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9038, LOCATE_parser_prod___AVarAssignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9273, LOCATE_parser_prod___AVarExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i]) return;
+  return_label800: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9045, LOCATE_parser_prod___AVarAssignExpr___n_assign__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarExpr___init_avarexpr(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9275, LOCATE_parser_prod___AVarExpr___init_avarexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label801: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9052, LOCATE_parser_prod___AVarAssignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarAssignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9316, LOCATE_parser_prod___AVarAssignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label802: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9060, LOCATE_parser_prod___AVarAssignExpr___empty_init};
+void parser_prod___AVarAssignExpr___n_assign__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9323, LOCATE_parser_prod___AVarAssignExpr___n_assign__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label803: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarAssignExpr___init_avarassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9062, LOCATE_parser_prod___AVarAssignExpr___init_avarassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AVarAssignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9330, LOCATE_parser_prod___AVarAssignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
-  ((parser_prod___AVarAssignExpr___empty_init_t)CALL( self,COLOR_parser_prod___AVarAssignExpr___empty_init))( self, init_table /*YYY*/) /*AVarAssignExpr::empty_init*/;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable1 /*n_assign*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_assign*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_assign*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_assign*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_assign*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_assign*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_assign*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable2 /*n_value*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_value*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
+  return_label804: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9083, LOCATE_parser_prod___AVarAssignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9085); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9089); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label784;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9099); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label784;
-  }
-  variable2 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarAssignExpr___replace_child, LOCATE_parser_prod, 9109); nit_exit(1);}
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label784;
+  struct trace_t trace = {NULL, NULL, 9361, LOCATE_parser_prod___AVarAssignExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9363); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9367); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label805;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9377); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_assign(variable[4]) /*AAssignFormExpr::_n_assign*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label805;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9387); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAssignFormExpr____n_value(variable[4]) /*AAssignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label805;
   }
-  return_label784: while(false);
+  return_label805: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9118, LOCATE_parser_prod___AVarAssignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  struct trace_t trace = {NULL, NULL, 9396, LOCATE_parser_prod___AVarAssignExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label806: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarAssignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9131, LOCATE_parser_prod___AVarAssignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9409, LOCATE_parser_prod___AVarAssignExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_assign( self) /*AAssignFormExpr::_n_assign*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAssignFormExpr____n_value( self) /*AAssignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label807: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9145, LOCATE_parser_prod___AVarReassignExpr___n_id__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarAssignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9338, LOCATE_parser_prod___AVarAssignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i]) return;
+  return_label808: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9152, LOCATE_parser_prod___AVarReassignExpr___n_assign_op__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarAssignExpr___init_avarassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9340, LOCATE_parser_prod___AVarAssignExpr___init_avarassignexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label809: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarAssignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9159, LOCATE_parser_prod___AVarReassignExpr___n_value__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarReassignExpr___n_id__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9423, LOCATE_parser_prod___AVarReassignExpr___n_id__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label810: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9167, LOCATE_parser_prod___AVarReassignExpr___empty_init};
+void parser_prod___AVarReassignExpr___n_assign_op__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9430, LOCATE_parser_prod___AVarReassignExpr___n_assign_op__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label811: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9169, LOCATE_parser_prod___AVarReassignExpr___init_avarreassignexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+void parser_prod___AVarReassignExpr___n_value__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9437, LOCATE_parser_prod___AVarReassignExpr___n_value__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
-  ((parser_prod___AVarReassignExpr___empty_init_t)CALL( self,COLOR_parser_prod___AVarReassignExpr___empty_init))( self, init_table /*YYY*/) /*AVarReassignExpr::empty_init*/;
-  ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable0 /*n_id*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_id*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_id*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_id*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_id*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_id*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_id*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_id*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable1 /*n_assign_op*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_assign_op*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_assign_op*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_assign_op*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_assign_op*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_assign_op*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_assign_op*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_assign_op*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable2 /*n_value*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_value*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_value*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_value*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_value*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_value*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_value*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_value*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_value*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
+  return_label812: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9190, LOCATE_parser_prod___AVarReassignExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9192); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9196); nit_exit(1);}
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  variable1 /*new_child*/;
+  struct trace_t trace = {NULL, NULL, 9468, LOCATE_parser_prod___AVarReassignExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9470); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9474); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AVarFormExpr____n_id(variable[4]) /*AVarFormExpr::_n_id*/ =  NIT_NULL /*null*/;
     }
-    goto return_label792;
+    goto return_label813;
   }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9206); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  variable1 /*new_child*/;
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9484); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_assign_op(variable[4]) /*AReassignFormExpr::_n_assign_op*/ =  NIT_NULL /*null*/;
     }
-    goto return_label792;
+    goto return_label813;
   }
-  variable2 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AVarReassignExpr___replace_child, LOCATE_parser_prod, 9216); nit_exit(1);}
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  variable1 /*new_child*/;
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9494); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AReassignFormExpr____n_value(variable[4]) /*AReassignFormExpr::_n_value*/ =  NIT_NULL /*null*/;
     }
-    goto return_label792;
+    goto return_label813;
   }
-  return_label792: while(false);
+  return_label813: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9225, LOCATE_parser_prod___AVarReassignExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9503, LOCATE_parser_prod___AVarReassignExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label814: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AVarReassignExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9238, LOCATE_parser_prod___AVarReassignExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9516, LOCATE_parser_prod___AVarReassignExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AVarFormExpr____n_id( self) /*AVarFormExpr::_n_id*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_assign_op( self) /*AReassignFormExpr::_n_assign_op*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AReassignFormExpr____n_value( self) /*AReassignFormExpr::_n_value*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label815: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9252, LOCATE_parser_prod___ARangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarReassignExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9445, LOCATE_parser_prod___AVarReassignExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i]) return;
+  return_label816: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9259, LOCATE_parser_prod___ARangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9447, LOCATE_parser_prod___AVarReassignExpr___init_avarreassignexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label817: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AVarReassignExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9267, LOCATE_parser_prod___ARangeExpr___empty_init};
+void parser_prod___ARangeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9530, LOCATE_parser_prod___ARangeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label818: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ARangeExpr___init_arangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9269, LOCATE_parser_prod___ARangeExpr___init_arangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ARangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9537, LOCATE_parser_prod___ARangeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
-  ((parser_prod___ARangeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ARangeExpr___empty_init))( self, init_table /*YYY*/) /*ARangeExpr::empty_init*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
+  return_label819: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9285, LOCATE_parser_prod___ARangeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9287); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9291); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label799;
-  }
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ARangeExpr___replace_child, LOCATE_parser_prod, 9301); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label799;
+  struct trace_t trace = {NULL, NULL, 9563, LOCATE_parser_prod___ARangeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9565); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9569); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label820;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9579); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label820;
   }
-  return_label799: while(false);
+  return_label820: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9310, LOCATE_parser_prod___ARangeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9588, LOCATE_parser_prod___ARangeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label821: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ARangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9320, LOCATE_parser_prod___ARangeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9598, LOCATE_parser_prod___ARangeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*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::==*/)))))));
+  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*/;
   }
+  return_label822: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ARangeExpr___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9545, LOCATE_parser_prod___ARangeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i]) return;
+  return_label823: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ARangeExpr___init_arangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 9547, LOCATE_parser_prod___ARangeExpr___init_arangeexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label824: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ARangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9331, LOCATE_parser_prod___ACrangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9609, LOCATE_parser_prod___ACrangeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label825: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9338, LOCATE_parser_prod___ACrangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9616, LOCATE_parser_prod___ACrangeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label826: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9642, LOCATE_parser_prod___ACrangeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9644); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9648); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label827;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9658); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label827;
+  }
+  return_label827: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACrangeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9667, LOCATE_parser_prod___ACrangeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label828: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9677, LOCATE_parser_prod___ACrangeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label829: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9346, LOCATE_parser_prod___ACrangeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9624, LOCATE_parser_prod___ACrangeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACrangeExpr].i]) return;
-  ((parser_prod___ARangeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ARangeExpr___empty_init))( self, init_table /*YYY*/) /*ARangeExpr::empty_init*/;
+  return_label830: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACrangeExpr___init_acrangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9348, LOCATE_parser_prod___ACrangeExpr___init_acrangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 9626, LOCATE_parser_prod___ACrangeExpr___init_acrangeexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACrangeExpr].i]) return;
-  ((parser_prod___ACrangeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ACrangeExpr___empty_init))( self, init_table /*YYY*/) /*ACrangeExpr::empty_init*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label831: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9364, LOCATE_parser_prod___ACrangeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9366); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9370); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label806;
-  }
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACrangeExpr___replace_child, LOCATE_parser_prod, 9380); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label806;
+void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9688, LOCATE_parser_prod___AOrangeExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label806: while(false);
+  return_label832: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9389, LOCATE_parser_prod___ACrangeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9695, LOCATE_parser_prod___AOrangeExpr___n_expr2__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label833: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9399, LOCATE_parser_prod___ACrangeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AOrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9721, LOCATE_parser_prod___AOrangeExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9723); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9727); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr(variable[4]) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label834;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9737); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ARangeExpr____n_expr2(variable[4]) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label834;
   }
+  return_label834: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9410, LOCATE_parser_prod___AOrangeExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrangeExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9746, LOCATE_parser_prod___AOrangeExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label835: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___n_expr2__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9417, LOCATE_parser_prod___AOrangeExpr___n_expr2__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AOrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9756, LOCATE_parser_prod___AOrangeExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label836: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrangeExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9425, LOCATE_parser_prod___AOrangeExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9703, LOCATE_parser_prod___AOrangeExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrangeExpr].i]) return;
-  ((parser_prod___ARangeExpr___empty_init_t)CALL( self,COLOR_parser_prod___ARangeExpr___empty_init))( self, init_table /*YYY*/) /*ARangeExpr::empty_init*/;
+  return_label837: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AOrangeExpr___init_aorangeexpr(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9427, LOCATE_parser_prod___AOrangeExpr___init_aorangeexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 9705, LOCATE_parser_prod___AOrangeExpr___init_aorangeexpr};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrangeExpr].i]) return;
-  ((parser_prod___AOrangeExpr___empty_init_t)CALL( self,COLOR_parser_prod___AOrangeExpr___empty_init))( self, init_table /*YYY*/) /*AOrangeExpr::empty_init*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*n_expr2*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_expr2*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_expr2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_expr2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_expr2*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_expr2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_expr2*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_expr2*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label838: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AOrangeExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9443, LOCATE_parser_prod___AOrangeExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9445); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9449); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label813;
-  }
-  variable2 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AOrangeExpr___replace_child, LOCATE_parser_prod, 9459); nit_exit(1);}
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/ =  NIT_NULL /*null*/;
+void parser_prod___AArrayExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9783, LOCATE_parser_prod___AArrayExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9785); 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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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, 9789); 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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label839;
     }
-    goto return_label813;
+    continue_840: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  return_label813: while(false);
+  break_840: while(0);
+  return_label839: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9468, LOCATE_parser_prod___AOrangeExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AArrayExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9800, LOCATE_parser_prod___AArrayExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_842: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
+  break_842: while(0);
+  return_label841: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AOrangeExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9478, LOCATE_parser_prod___AOrangeExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AArrayExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9807, LOCATE_parser_prod___AArrayExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr( self) /*ARangeExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ARangeExpr____n_expr2( self) /*ARangeExpr::_n_expr2*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_844: while(0);
   }
+  break_844: while(0);
+  return_label843: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AArrayExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9490, LOCATE_parser_prod___AArrayExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9768, LOCATE_parser_prod___AArrayExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
+  return_label845: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AArrayExpr___init_aarrayexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9492, LOCATE_parser_prod___AArrayExpr___init_aarrayexpr};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+  struct trace_t trace = {NULL, NULL, 9770, LOCATE_parser_prod___AArrayExpr___init_aarrayexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i]) return;
-  ((parser_prod___AArrayExpr___empty_init_t)CALL( self,COLOR_parser_prod___AArrayExpr___empty_init))( self, init_table /*YYY*/) /*AArrayExpr::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_exprs*/) /*AbstractArray::iterator*/;
+  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*/;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___init_aarrayexpr, LOCATE_parser_prod, 9499); nit_exit(1);}
-    variable3 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_818: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_818: while(0);
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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, 9777); 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*/;
+    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=*/;
+    continue_847: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_847: while(0);
+  return_label846: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AArrayExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AArrayExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9505, LOCATE_parser_prod___AArrayExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9507); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AArrayExpr___replace_child, LOCATE_parser_prod, 9511); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      } else { /*if*/
-        variable4 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
-      }
-      goto return_label819;
-    }
-    continue_820: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9819, LOCATE_parser_prod___ASelfExpr___n_kwself__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  break_820: while(0);
-  return_label819: while(false);
+  return_label848: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AArrayExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9522, LOCATE_parser_prod___AArrayExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
-  while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_822: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+void parser_prod___ASelfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9840, LOCATE_parser_prod___ASelfExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9842); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9846); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASelfExpr____n_kwself(variable[4]) /*ASelfExpr::_n_kwself*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ASelfExpr____n_kwself(variable[4]) /*ASelfExpr::_n_kwself*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label849;
   }
-  break_822: while(0);
+  return_label849: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AArrayExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9529, LOCATE_parser_prod___AArrayExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ASelfExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9855, LOCATE_parser_prod___ASelfExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
-  while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AArrayExpr____n_exprs( self) /*AArrayExpr::_n_exprs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_824: while(0);
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  break_824: while(0);
+  return_label850: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___n_kwself__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9541, LOCATE_parser_prod___ASelfExpr___n_kwself__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9862, LOCATE_parser_prod___ASelfExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label851: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9549, LOCATE_parser_prod___ASelfExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9827, LOCATE_parser_prod___ASelfExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
+  return_label852: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASelfExpr___init_aselfexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9551, LOCATE_parser_prod___ASelfExpr___init_aselfexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9829, LOCATE_parser_prod___ASelfExpr___init_aselfexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i]) return;
-  ((parser_prod___ASelfExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASelfExpr___empty_init))( self, init_table /*YYY*/) /*ASelfExpr::empty_init*/;
-  ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/ =  variable0 /*n_kwself*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwself*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwself*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwself*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwself*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwself*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwself*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwself*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwself*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label853: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9562, LOCATE_parser_prod___ASelfExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9564); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASelfExpr___replace_child, LOCATE_parser_prod, 9568); nit_exit(1);}
-      ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label828;
-  }
-  return_label828: while(false);
+void parser_prod___AImplicitSelfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9878, LOCATE_parser_prod___AImplicitSelfExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9880); nit_exit(1);}
+  return_label854: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9577, LOCATE_parser_prod___ASelfExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImplicitSelfExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9883, LOCATE_parser_prod___AImplicitSelfExpr___visit_all};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label855: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9584, LOCATE_parser_prod___ASelfExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AImplicitSelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9887, LOCATE_parser_prod___AImplicitSelfExpr___visit_all_reverse};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ASelfExpr____n_kwself( self) /*ASelfExpr::_n_kwself*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
+  variable[0] =  self;
+  variable[1] =  param0;
+  return_label856: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImplicitSelfExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9593, LOCATE_parser_prod___AImplicitSelfExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9871, LOCATE_parser_prod___AImplicitSelfExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i]) return;
-  ((parser_prod___ASelfExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASelfExpr___empty_init))( self, init_table /*YYY*/) /*ASelfExpr::empty_init*/;
+  return_label857: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9595, LOCATE_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr};
+  struct trace_t trace = {NULL, NULL, 9873, LOCATE_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr};
+  val_t variable[3];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i]) return;
-  ((parser_prod___AImplicitSelfExpr___empty_init_t)CALL( self,COLOR_parser_prod___AImplicitSelfExpr___empty_init))( self, init_table /*YYY*/) /*AImplicitSelfExpr::empty_init*/;
+  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*/;
+  return_label858: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AImplicitSelfExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImplicitSelfExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9600, LOCATE_parser_prod___AImplicitSelfExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9892, LOCATE_parser_prod___ATrueExpr___n_kwtrue__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AImplicitSelfExpr___replace_child, LOCATE_parser_prod, 9602); nit_exit(1);}
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
+  }
+  return_label859: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImplicitSelfExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9605, LOCATE_parser_prod___AImplicitSelfExpr___visit_all};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+void parser_prod___ATrueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9913, LOCATE_parser_prod___ATrueExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9915); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9919); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[4]) /*ATrueExpr::_n_kwtrue*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ATrueExpr____n_kwtrue(variable[4]) /*ATrueExpr::_n_kwtrue*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label860;
+  }
+  return_label860: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AImplicitSelfExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9609, LOCATE_parser_prod___AImplicitSelfExpr___visit_all_reverse};
-  val_t variable0;
+void parser_prod___ATrueExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9928, LOCATE_parser_prod___ATrueExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  return_label861: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___n_kwtrue__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9614, LOCATE_parser_prod___ATrueExpr___n_kwtrue__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ATrueExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9935, LOCATE_parser_prod___ATrueExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label862: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATrueExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9622, LOCATE_parser_prod___ATrueExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9900, LOCATE_parser_prod___ATrueExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
+  return_label863: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ATrueExpr___init_atrueexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9624, LOCATE_parser_prod___ATrueExpr___init_atrueexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9902, LOCATE_parser_prod___ATrueExpr___init_atrueexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i]) return;
-  ((parser_prod___ATrueExpr___empty_init_t)CALL( self,COLOR_parser_prod___ATrueExpr___empty_init))( self, init_table /*YYY*/) /*ATrueExpr::empty_init*/;
-  ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/ =  variable0 /*n_kwtrue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwtrue*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwtrue*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwtrue*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwtrue*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwtrue*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwtrue*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwtrue*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwtrue*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label864: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ATrueExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9635, LOCATE_parser_prod___ATrueExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 9637); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ATrueExpr___replace_child, LOCATE_parser_prod, 9641); nit_exit(1);}
-      ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label839;
+void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9943, LOCATE_parser_prod___AFalseExpr___n_kwfalse__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label839: while(false);
+  return_label865: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9650, LOCATE_parser_prod___ATrueExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AFalseExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 9964, LOCATE_parser_prod___AFalseExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 9966); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 9970); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[4]) /*AFalseExpr::_n_kwfalse*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFalseExpr____n_kwfalse(variable[4]) /*AFalseExpr::_n_kwfalse*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label866;
   }
+  return_label866: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ATrueExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9657, LOCATE_parser_prod___ATrueExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFalseExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9979, LOCATE_parser_prod___AFalseExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ATrueExpr____n_kwtrue( self) /*ATrueExpr::_n_kwtrue*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label867: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___n_kwfalse__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9665, LOCATE_parser_prod___AFalseExpr___n_kwfalse__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFalseExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9986, LOCATE_parser_prod___AFalseExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label868: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFalseExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9673, LOCATE_parser_prod___AFalseExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 9951, LOCATE_parser_prod___AFalseExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
+  return_label869: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFalseExpr___init_afalseexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9675, LOCATE_parser_prod___AFalseExpr___init_afalseexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 9953, LOCATE_parser_prod___AFalseExpr___init_afalseexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i]) return;
-  ((parser_prod___AFalseExpr___empty_init_t)CALL( self,COLOR_parser_prod___AFalseExpr___empty_init))( self, init_table /*YYY*/) /*AFalseExpr::empty_init*/;
-  ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/ =  variable0 /*n_kwfalse*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwfalse*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwfalse*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwfalse*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwfalse*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwfalse*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwfalse*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwfalse*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwfalse*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label870: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFalseExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9686, LOCATE_parser_prod___AFalseExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 9688); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFalseExpr___replace_child, LOCATE_parser_prod, 9692); nit_exit(1);}
-      ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label845;
+void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 9994, LOCATE_parser_prod___ANullExpr___n_kwnull__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label845: while(false);
+  return_label871: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9701, LOCATE_parser_prod___AFalseExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___ANullExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10015, LOCATE_parser_prod___ANullExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10017); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10021); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANullExpr____n_kwnull(variable[4]) /*ANullExpr::_n_kwnull*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ANullExpr____n_kwnull(variable[4]) /*ANullExpr::_n_kwnull*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label872;
   }
+  return_label872: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFalseExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9708, LOCATE_parser_prod___AFalseExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANullExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10030, LOCATE_parser_prod___ANullExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFalseExpr____n_kwfalse( self) /*AFalseExpr::_n_kwfalse*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label873: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___n_kwnull__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9716, LOCATE_parser_prod___ANullExpr___n_kwnull__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ANullExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10037, LOCATE_parser_prod___ANullExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label874: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANullExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9724, LOCATE_parser_prod___ANullExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10002, LOCATE_parser_prod___ANullExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i]) return;
+  return_label875: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ANullExpr___init_anullexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9726, LOCATE_parser_prod___ANullExpr___init_anullexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10004, LOCATE_parser_prod___ANullExpr___init_anullexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i]) return;
-  ((parser_prod___ANullExpr___empty_init_t)CALL( self,COLOR_parser_prod___ANullExpr___empty_init))( self, init_table /*YYY*/) /*ANullExpr::empty_init*/;
-  ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/ =  variable0 /*n_kwnull*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_kwnull*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_kwnull*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnull*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_kwnull*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_kwnull*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_kwnull*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_kwnull*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_kwnull*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label876: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ANullExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9737, LOCATE_parser_prod___ANullExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 9739); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ANullExpr___replace_child, LOCATE_parser_prod, 9743); nit_exit(1);}
-      ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label851;
+void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10045, LOCATE_parser_prod___AIntExpr___n_number__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label851: while(false);
+  return_label877: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9752, LOCATE_parser_prod___ANullExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AIntExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10066, LOCATE_parser_prod___AIntExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10068); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10072); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIntExpr____n_number(variable[4]) /*AIntExpr::_n_number*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AIntExpr____n_number(variable[4]) /*AIntExpr::_n_number*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label878;
   }
+  return_label878: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ANullExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9759, LOCATE_parser_prod___ANullExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10081, LOCATE_parser_prod___AIntExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ANullExpr____n_kwnull( self) /*ANullExpr::_n_kwnull*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label879: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___n_number__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9767, LOCATE_parser_prod___AIntExpr___n_number__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AIntExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10088, LOCATE_parser_prod___AIntExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label880: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9775, LOCATE_parser_prod___AIntExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10053, LOCATE_parser_prod___AIntExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i]) return;
+  return_label881: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AIntExpr___init_aintexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9777, LOCATE_parser_prod___AIntExpr___init_aintexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10055, LOCATE_parser_prod___AIntExpr___init_aintexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i]) return;
-  ((parser_prod___AIntExpr___empty_init_t)CALL( self,COLOR_parser_prod___AIntExpr___empty_init))( self, init_table /*YYY*/) /*AIntExpr::empty_init*/;
-  ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/ =  variable0 /*n_number*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_number*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_number*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_number*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_number*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_number*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_number*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_number*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_number*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label882: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AIntExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9788, LOCATE_parser_prod___AIntExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 9790); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AIntExpr___replace_child, LOCATE_parser_prod, 9794); nit_exit(1);}
-      ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label857;
+void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10096, LOCATE_parser_prod___AFloatExpr___n_float__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label857: while(false);
+  return_label883: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9803, LOCATE_parser_prod___AIntExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AFloatExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10117, LOCATE_parser_prod___AFloatExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10119); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10123); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFloatExpr____n_float(variable[4]) /*AFloatExpr::_n_float*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AFloatExpr____n_float(variable[4]) /*AFloatExpr::_n_float*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label884;
   }
+  return_label884: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AIntExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9810, LOCATE_parser_prod___AIntExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFloatExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10132, LOCATE_parser_prod___AFloatExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AIntExpr____n_number( self) /*AIntExpr::_n_number*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label885: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFloatExpr___n_float__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9818, LOCATE_parser_prod___AFloatExpr___n_float__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AFloatExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10139, LOCATE_parser_prod___AFloatExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label886: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFloatExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9826, LOCATE_parser_prod___AFloatExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10104, LOCATE_parser_prod___AFloatExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
+  return_label887: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AFloatExpr___init_afloatexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9828, LOCATE_parser_prod___AFloatExpr___init_afloatexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10106, LOCATE_parser_prod___AFloatExpr___init_afloatexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i]) return;
-  ((parser_prod___AFloatExpr___empty_init_t)CALL( self,COLOR_parser_prod___AFloatExpr___empty_init))( self, init_table /*YYY*/) /*AFloatExpr::empty_init*/;
-  ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/ =  variable0 /*n_float*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_float*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_float*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_float*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_float*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_float*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_float*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_float*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_float*/,  self) /*PNode::parent=*/;
-  }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser_prod___AFloatExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9839, LOCATE_parser_prod___AFloatExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 9841); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AFloatExpr___replace_child, LOCATE_parser_prod, 9845); nit_exit(1);}
-      ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label863;
-  }
-  return_label863: while(false);
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label888: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AFloatExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFloatExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9854, LOCATE_parser_prod___AFloatExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10147, LOCATE_parser_prod___ACharExpr___n_char__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label889: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AFloatExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9861, LOCATE_parser_prod___AFloatExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACharExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10168, LOCATE_parser_prod___ACharExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10170); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10174); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACharExpr____n_char(variable[4]) /*ACharExpr::_n_char*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___ACharExpr____n_char(variable[4]) /*ACharExpr::_n_char*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label890;
+  }
+  return_label890: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ACharExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10183, LOCATE_parser_prod___ACharExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AFloatExpr____n_float( self) /*AFloatExpr::_n_float*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label891: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___n_char__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9869, LOCATE_parser_prod___ACharExpr___n_char__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ACharExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10190, LOCATE_parser_prod___ACharExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label892: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACharExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9877, LOCATE_parser_prod___ACharExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10155, LOCATE_parser_prod___ACharExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i]) return;
+  return_label893: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ACharExpr___init_acharexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9879, LOCATE_parser_prod___ACharExpr___init_acharexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10157, LOCATE_parser_prod___ACharExpr___init_acharexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i]) return;
-  ((parser_prod___ACharExpr___empty_init_t)CALL( self,COLOR_parser_prod___ACharExpr___empty_init))( self, init_table /*YYY*/) /*ACharExpr::empty_init*/;
-  ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/ =  variable0 /*n_char*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_char*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_char*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_char*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_char*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_char*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_char*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_char*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_char*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label894: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ACharExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9890, LOCATE_parser_prod___ACharExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 9892); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ACharExpr___replace_child, LOCATE_parser_prod, 9896); nit_exit(1);}
-      ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label869;
+void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10198, LOCATE_parser_prod___AStringExpr___n_string__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label869: while(false);
+  return_label895: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9905, LOCATE_parser_prod___ACharExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10219, LOCATE_parser_prod___AStringExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10221); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10225); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStringExpr____n_string(variable[4]) /*AStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStringExpr____n_string(variable[4]) /*AStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label896;
   }
+  return_label896: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ACharExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9912, LOCATE_parser_prod___ACharExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStringExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10234, LOCATE_parser_prod___AStringExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___ACharExpr____n_char( self) /*ACharExpr::_n_char*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label897: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9920, LOCATE_parser_prod___AStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10241, LOCATE_parser_prod___AStringExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label898: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9928, LOCATE_parser_prod___AStringExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10206, LOCATE_parser_prod___AStringExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i]) return;
+  return_label899: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStringExpr___init_astringexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9930, LOCATE_parser_prod___AStringExpr___init_astringexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10208, LOCATE_parser_prod___AStringExpr___init_astringexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i]) return;
-  ((parser_prod___AStringExpr___empty_init_t)CALL( self,COLOR_parser_prod___AStringExpr___empty_init))( self, init_table /*YYY*/) /*AStringExpr::empty_init*/;
-  ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/ =  variable0 /*n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_string*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_string*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label900: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9941, LOCATE_parser_prod___AStringExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 9943); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TString, ID_TString)) /*cast TString*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStringExpr___replace_child, LOCATE_parser_prod, 9947); nit_exit(1);}
-      ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label875;
+void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10249, LOCATE_parser_prod___AStartStringExpr___n_string__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label875: while(false);
+  return_label901: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9956, LOCATE_parser_prod___AStringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AStartStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10270, LOCATE_parser_prod___AStartStringExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10272); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10276); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStartStringExpr____n_string(variable[4]) /*AStartStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AStartStringExpr____n_string(variable[4]) /*AStartStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label902;
   }
+  return_label902: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9963, LOCATE_parser_prod___AStringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStartStringExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10285, LOCATE_parser_prod___AStartStringExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStringExpr____n_string( self) /*AStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label903: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9971, LOCATE_parser_prod___AStartStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AStartStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10292, LOCATE_parser_prod___AStartStringExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label904: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStartStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9979, LOCATE_parser_prod___AStartStringExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10257, LOCATE_parser_prod___AStartStringExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
+  return_label905: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AStartStringExpr___init_astartstringexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9981, LOCATE_parser_prod___AStartStringExpr___init_astartstringexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10259, LOCATE_parser_prod___AStartStringExpr___init_astartstringexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i]) return;
-  ((parser_prod___AStartStringExpr___empty_init_t)CALL( self,COLOR_parser_prod___AStartStringExpr___empty_init))( self, init_table /*YYY*/) /*AStartStringExpr::empty_init*/;
-  ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/ =  variable0 /*n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_string*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_string*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label906: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AStartStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 9992, LOCATE_parser_prod___AStartStringExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 9994); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AStartStringExpr___replace_child, LOCATE_parser_prod, 9998); nit_exit(1);}
-      ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label881;
+void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10300, LOCATE_parser_prod___AMidStringExpr___n_string__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label881: while(false);
+  return_label907: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10007, LOCATE_parser_prod___AStartStringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AMidStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10321, LOCATE_parser_prod___AMidStringExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10323); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10327); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMidStringExpr____n_string(variable[4]) /*AMidStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMidStringExpr____n_string(variable[4]) /*AMidStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label908;
   }
+  return_label908: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AStartStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10014, LOCATE_parser_prod___AStartStringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMidStringExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10336, LOCATE_parser_prod___AMidStringExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AStartStringExpr____n_string( self) /*AStartStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label909: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10022, LOCATE_parser_prod___AMidStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMidStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10343, LOCATE_parser_prod___AMidStringExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label910: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMidStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10030, LOCATE_parser_prod___AMidStringExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10308, LOCATE_parser_prod___AMidStringExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
+  return_label911: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMidStringExpr___init_amidstringexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10032, LOCATE_parser_prod___AMidStringExpr___init_amidstringexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10310, LOCATE_parser_prod___AMidStringExpr___init_amidstringexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i]) return;
-  ((parser_prod___AMidStringExpr___empty_init_t)CALL( self,COLOR_parser_prod___AMidStringExpr___empty_init))( self, init_table /*YYY*/) /*AMidStringExpr::empty_init*/;
-  ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/ =  variable0 /*n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_string*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_string*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label912: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMidStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10043, LOCATE_parser_prod___AMidStringExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10045); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMidStringExpr___replace_child, LOCATE_parser_prod, 10049); nit_exit(1);}
-      ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label887;
+void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10351, LOCATE_parser_prod___AEndStringExpr___n_string__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label887: while(false);
+  return_label913: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10058, LOCATE_parser_prod___AMidStringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AEndStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10372, LOCATE_parser_prod___AEndStringExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10374); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10378); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEndStringExpr____n_string(variable[4]) /*AEndStringExpr::_n_string*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AEndStringExpr____n_string(variable[4]) /*AEndStringExpr::_n_string*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label914;
   }
+  return_label914: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMidStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10065, LOCATE_parser_prod___AMidStringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEndStringExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10387, LOCATE_parser_prod___AEndStringExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMidStringExpr____n_string( self) /*AMidStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label915: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___n_string__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10073, LOCATE_parser_prod___AEndStringExpr___n_string__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AEndStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10394, LOCATE_parser_prod___AEndStringExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label916: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEndStringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10081, LOCATE_parser_prod___AEndStringExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10359, LOCATE_parser_prod___AEndStringExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
+  return_label917: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AEndStringExpr___init_aendstringexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10083, LOCATE_parser_prod___AEndStringExpr___init_aendstringexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10361, LOCATE_parser_prod___AEndStringExpr___init_aendstringexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i]) return;
-  ((parser_prod___AEndStringExpr___empty_init_t)CALL( self,COLOR_parser_prod___AEndStringExpr___empty_init))( self, init_table /*YYY*/) /*AEndStringExpr::empty_init*/;
-  ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/ =  variable0 /*n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_string*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_string*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_string*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_string*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_string*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_string*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_string*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label918: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AEndStringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10094, LOCATE_parser_prod___AEndStringExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10096); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AEndStringExpr___replace_child, LOCATE_parser_prod, 10100); nit_exit(1);}
-      ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label893;
+void parser_prod___ASuperstringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10418, LOCATE_parser_prod___ASuperstringExpr___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10420); 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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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, 10424); 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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label919;
+    }
+    continue_920: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  return_label893: while(false);
+  break_920: while(0);
+  return_label919: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10109, LOCATE_parser_prod___AEndStringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperstringExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10435, LOCATE_parser_prod___ASuperstringExpr___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_922: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
+  break_922: while(0);
+  return_label921: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AEndStringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10116, LOCATE_parser_prod___AEndStringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ASuperstringExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10442, LOCATE_parser_prod___ASuperstringExpr___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AEndStringExpr____n_string( self) /*AEndStringExpr::_n_string*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_924: while(0);
   }
+  break_924: while(0);
+  return_label923: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperstringExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10125, LOCATE_parser_prod___ASuperstringExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10403, LOCATE_parser_prod___ASuperstringExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
+  return_label925: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10127, LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+  struct trace_t trace = {NULL, NULL, 10405, LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr};
+  val_t variable[7];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i]) return;
-  ((parser_prod___ASuperstringExpr___empty_init_t)CALL( self,COLOR_parser_prod___ASuperstringExpr___empty_init))( self, init_table /*YYY*/) /*ASuperstringExpr::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[PExpr]*/
-  ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_exprs*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_exprs*/) /*AbstractArray::iterator*/;
+  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*/;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-    if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___init_asuperstringexpr, LOCATE_parser_prod, 10134); nit_exit(1);}
-    variable3 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_898: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_898: while(0);
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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, 10412); 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*/;
+    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=*/;
+    continue_927: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_927: while(0);
+  return_label926: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ASuperstringExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperstringExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10140, LOCATE_parser_prod___ASuperstringExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10142); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ASuperstringExpr___replace_child, LOCATE_parser_prod, 10146); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      } else { /*if*/
-        variable4 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
-      }
-      goto return_label899;
-    }
-    continue_900: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10454, LOCATE_parser_prod___AParExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  break_900: while(0);
-  return_label899: while(false);
+  return_label928: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperstringExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10157, LOCATE_parser_prod___ASuperstringExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
-  while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_902: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+void parser_prod___AParExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10475, LOCATE_parser_prod___AParExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10477); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10481); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AProxyExpr____n_expr(variable[4]) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label929;
   }
-  break_902: while(0);
+  return_label929: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ASuperstringExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10164, LOCATE_parser_prod___ASuperstringExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AParExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10490, LOCATE_parser_prod___AParExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
-  while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ASuperstringExpr____n_exprs( self) /*ASuperstringExpr::_n_exprs*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_904: while(0);
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
-  break_904: while(0);
+  return_label930: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10176, LOCATE_parser_prod___AParExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AParExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10497, LOCATE_parser_prod___AParExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label931: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10184, LOCATE_parser_prod___AParExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10462, LOCATE_parser_prod___AParExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
+  return_label932: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AParExpr___init_aparexpr(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10186, LOCATE_parser_prod___AParExpr___init_aparexpr};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10464, LOCATE_parser_prod___AParExpr___init_aparexpr};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i]) return;
-  ((parser_prod___AParExpr___empty_init_t)CALL( self,COLOR_parser_prod___AParExpr___empty_init))( self, init_table /*YYY*/) /*AParExpr::empty_init*/;
-  ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label933: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AParExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10197, LOCATE_parser_prod___AParExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10199); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AParExpr___replace_child, LOCATE_parser_prod, 10203); nit_exit(1);}
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label908;
+void parser_prod___AAsCastExpr___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10505, LOCATE_parser_prod___AAsCastExpr___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label908: while(false);
+  return_label934: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10212, LOCATE_parser_prod___AParExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAsCastExpr___n_kwas__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10512, LOCATE_parser_prod___AAsCastExpr___n_kwas__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label935: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AParExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10219, LOCATE_parser_prod___AParExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAsCastExpr___n_type__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10519, LOCATE_parser_prod___AAsCastExpr___n_type__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AProxyExpr____n_expr( self) /*AProxyExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label936: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___n_expr__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10227, LOCATE_parser_prod___AAsCastExpr___n_expr__eq};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+void parser_prod___AAsCastExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10550, LOCATE_parser_prod___AAsCastExpr___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10552); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10556); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_expr(variable[4]) /*AAsCastExpr::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_expr(variable[4]) /*AAsCastExpr::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label937;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10566); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[4]) /*AAsCastExpr::_n_kwas*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_kwas(variable[4]) /*AAsCastExpr::_n_kwas*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label937;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10576); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_type(variable[4]) /*AAsCastExpr::_n_type*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AAsCastExpr____n_type(variable[4]) /*AAsCastExpr::_n_type*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label937;
   }
+  return_label937: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___n_kwas__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10234, LOCATE_parser_prod___AAsCastExpr___n_kwas__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAsCastExpr___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10585, LOCATE_parser_prod___AAsCastExpr___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label938: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___n_type__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10241, LOCATE_parser_prod___AAsCastExpr___n_type__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AAsCastExpr___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10598, LOCATE_parser_prod___AAsCastExpr___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
   }
+  return_label939: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAsCastExpr___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10249, LOCATE_parser_prod___AAsCastExpr___empty_init};
+  struct trace_t trace = {NULL, NULL, 10527, LOCATE_parser_prod___AAsCastExpr___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
+  return_label940: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAsCastExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AAsCastExpr___init_aascastexpr(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10251, LOCATE_parser_prod___AAsCastExpr___init_aascastexpr};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
+  struct trace_t trace = {NULL, NULL, 10529, LOCATE_parser_prod___AAsCastExpr___init_aascastexpr};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAsCastExpr].i]) return;
-  ((parser_prod___AAsCastExpr___empty_init_t)CALL( self,COLOR_parser_prod___AAsCastExpr___empty_init))( self, init_table /*YYY*/) /*AAsCastExpr::empty_init*/;
-  ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/ =  variable0 /*n_expr*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_expr*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_expr*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_expr*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_expr*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_expr*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_expr*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_expr*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/ =  variable1 /*n_kwas*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_kwas*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_kwas*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwas*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_kwas*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_kwas*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_kwas*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_kwas*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_kwas*/,  self) /*PNode::parent=*/;
-  }
-  ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/ =  variable2 /*n_type*/;
-  variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*n_type*/ ==  NIT_NULL /*null*/) || (( variable2 /*n_type*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*n_type*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*n_type*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*n_type*/,COLOR_kernel___Object_____eqeq))( variable2 /*n_type*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable3)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n_type*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n_type*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label941: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AAsCastExpr].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10272, LOCATE_parser_prod___AAsCastExpr___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10274); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10278); nit_exit(1);}
-      ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label916;
-  }
-  variable2 = ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10288); nit_exit(1);}
-      ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label916;
-  }
-  variable2 = ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PType, ID_PType)) /*cast PType*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AAsCastExpr___replace_child, LOCATE_parser_prod, 10298); nit_exit(1);}
-      ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label916;
+void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10612, LOCATE_parser_prod___APlusAssignOp___n_pluseq__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label916: while(false);
+  return_label942: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10307, LOCATE_parser_prod___AAsCastExpr___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___APlusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10633, LOCATE_parser_prod___APlusAssignOp___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10635); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10639); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[4]) /*APlusAssignOp::_n_pluseq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___APlusAssignOp____n_pluseq(variable[4]) /*APlusAssignOp::_n_pluseq*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label943;
   }
+  return_label943: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AAsCastExpr___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10320, LOCATE_parser_prod___AAsCastExpr___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusAssignOp___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10648, LOCATE_parser_prod___APlusAssignOp___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_expr( self) /*AAsCastExpr::_n_expr*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_kwas( self) /*AAsCastExpr::_n_kwas*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
-  }
-  variable1 = ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AAsCastExpr____n_type( self) /*AAsCastExpr::_n_type*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label944: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___n_pluseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10334, LOCATE_parser_prod___APlusAssignOp___n_pluseq__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___APlusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10655, LOCATE_parser_prod___APlusAssignOp___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label945: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10342, LOCATE_parser_prod___APlusAssignOp___empty_init};
+  struct trace_t trace = {NULL, NULL, 10620, LOCATE_parser_prod___APlusAssignOp___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
+  return_label946: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___APlusAssignOp___init_aplusassignop(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10344, LOCATE_parser_prod___APlusAssignOp___init_aplusassignop};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10622, LOCATE_parser_prod___APlusAssignOp___init_aplusassignop};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i]) return;
-  ((parser_prod___APlusAssignOp___empty_init_t)CALL( self,COLOR_parser_prod___APlusAssignOp___empty_init))( self, init_table /*YYY*/) /*APlusAssignOp::empty_init*/;
-  ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/ =  variable0 /*n_pluseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_pluseq*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_pluseq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_pluseq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_pluseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_pluseq*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_pluseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_pluseq*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_pluseq*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label947: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_APlusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10355, LOCATE_parser_prod___APlusAssignOp___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10663, LOCATE_parser_prod___AMinusAssignOp___n_minuseq__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 10357); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___APlusAssignOp___replace_child, LOCATE_parser_prod, 10361); nit_exit(1);}
-      ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label922;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label922: while(false);
+  return_label948: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10370, LOCATE_parser_prod___APlusAssignOp___visit_all};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+void parser_prod___AMinusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10684, LOCATE_parser_prod___AMinusAssignOp___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10686); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10690); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[4]) /*AMinusAssignOp::_n_minuseq*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AMinusAssignOp____n_minuseq(variable[4]) /*AMinusAssignOp::_n_minuseq*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label949;
   }
+  return_label949: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___APlusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10377, LOCATE_parser_prod___APlusAssignOp___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusAssignOp___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10699, LOCATE_parser_prod___AMinusAssignOp___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___APlusAssignOp____n_pluseq( self) /*APlusAssignOp::_n_pluseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label950: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___n_minuseq__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10385, LOCATE_parser_prod___AMinusAssignOp___n_minuseq__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AMinusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10706, LOCATE_parser_prod___AMinusAssignOp___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label951: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusAssignOp___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10393, LOCATE_parser_prod___AMinusAssignOp___empty_init};
+  struct trace_t trace = {NULL, NULL, 10671, LOCATE_parser_prod___AMinusAssignOp___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
+  return_label952: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AMinusAssignOp___init_aminusassignop(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10395, LOCATE_parser_prod___AMinusAssignOp___init_aminusassignop};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 10673, LOCATE_parser_prod___AMinusAssignOp___init_aminusassignop};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
+  variable[0] =  self;
+  variable[1] =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i]) return;
-  ((parser_prod___AMinusAssignOp___empty_init_t)CALL( self,COLOR_parser_prod___AMinusAssignOp___empty_init))( self, init_table /*YYY*/) /*AMinusAssignOp::empty_init*/;
-  ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/ =  variable0 /*n_minuseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n_minuseq*/ ==  NIT_NULL /*null*/) || (( variable0 /*n_minuseq*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n_minuseq*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n_minuseq*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n_minuseq*/,COLOR_kernel___Object_____eqeq))( variable0 /*n_minuseq*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n_minuseq*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n_minuseq*/,  self) /*PNode::parent=*/;
-  }
+  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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label953: while(false);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AMinusAssignOp].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10406, LOCATE_parser_prod___AMinusAssignOp___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 10408); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AMinusAssignOp___replace_child, LOCATE_parser_prod, 10412); nit_exit(1);}
-      ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/ =  variable1 /*new_child*/;
-    } else { /*if*/
-      ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/ =  NIT_NULL /*null*/;
-    }
-    goto return_label928;
+void parser_prod___AClosureDef___n_kwwith__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10714, LOCATE_parser_prod___AClosureDef___n_kwwith__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  return_label928: while(false);
+  return_label954: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10421, LOCATE_parser_prod___AMinusAssignOp___visit_all};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDef___n_kwdo__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10721, LOCATE_parser_prod___AClosureDef___n_kwdo__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label955: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AMinusAssignOp___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10428, LOCATE_parser_prod___AMinusAssignOp___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDef___n_expr__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10728, LOCATE_parser_prod___AClosureDef___n_expr__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AMinusAssignOp____n_minuseq( self) /*AMinusAssignOp::_n_minuseq*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
+  return_label956: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10436, LOCATE_parser_prod___AQualified___n_classid__eq};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___AClosureDef___replace_child(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 10766, LOCATE_parser_prod___AClosureDef___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  variable0 /*n*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*n*/,  self) /*PNode::parent=*/;
+  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::==*/)))))));
+  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, 10768); 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10772); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_kwwith(variable[4]) /*AClosureDef::_n_kwwith*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_kwwith(variable[4]) /*AClosureDef::_n_kwwith*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label957;
+  }
+  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[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*/;
+  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*/;
+    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[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::==*/)))));
+    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::==*/)))))));
+      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, 10782); 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::[]=*/;
+        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=*/;
+      } 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*/;
+      }
+      goto return_label957;
+    }
+    continue_958: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_958: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10794); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_kwdo(variable[4]) /*AClosureDef::_n_kwdo*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_kwdo(variable[4]) /*AClosureDef::_n_kwdo*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label957;
+  }
+  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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10804); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_expr(variable[4]) /*AClosureDef::_n_expr*/ =  variable[2] /*new_child*/;
+    } else { /*if*/
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AClosureDef____n_expr(variable[4]) /*AClosureDef::_n_expr*/ =  NIT_NULL /*null*/;
+    }
+    goto return_label957;
   }
+  return_label957: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10444, LOCATE_parser_prod___AQualified___empty_init};
+void parser_prod___AClosureDef___visit_all(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10813, LOCATE_parser_prod___AClosureDef___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_960: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
+  }
+  break_960: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label959: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___visit_all_reverse(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10829, LOCATE_parser_prod___AClosureDef___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
+  }
+  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[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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_962: while(0);
+  }
+  break_962: 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::==*/)))))));
+  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*/;
+  }
+  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::==*/)))))));
+  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*/;
+  }
+  return_label961: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10736, LOCATE_parser_prod___AClosureDef___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDef].i]) return;
+  return_label963: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDef].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___AClosureDef___init_aclosuredef(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10738, LOCATE_parser_prod___AClosureDef___init_aclosuredef};
+  val_t variable[10];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  variable[3] =  param2;
+  variable[4] =  param3;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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::==*/)))))));
+  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=*/;
+  }
+  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*/;
+  while (true) { /*for*/
+    variable[7] = ((array___ArrayIterator___is_ok_t)CALL(variable[6],COLOR_abstract_collection___Iterator___is_ok))(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[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, 10752); 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*/;
+    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=*/;
+    continue_965: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[6],COLOR_abstract_collection___Iterator___next))(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_965: 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::==*/)))))));
+  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=*/;
+  }
+  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::==*/)))))));
+  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=*/;
+  }
+  return_label964: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AClosureDef].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___AQualified___init_aqualified(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10446, LOCATE_parser_prod___AQualified___init_aqualified};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
+void parser_prod___AQualified___n_classid__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 10850, LOCATE_parser_prod___AQualified___n_classid__eq};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
-  ((parser_prod___AQualified___empty_init_t)CALL( self,COLOR_parser_prod___AQualified___empty_init))( self, init_table /*YYY*/) /*AQualified::empty_init*/;
-  variable2 = NEW_List_list___List___init(); /*new List[TId]*/
-  ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/ = variable2;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_id*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_id*/) /*AbstractArray::iterator*/;
-  while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = TAG_Bool(( variable3 /*n*/==NIT_NULL) || VAL_ISA( variable3 /*n*/, COLOR_TId, ID_TId)) /*cast TId*/;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___init_aqualified, LOCATE_parser_prod, 10454); nit_exit(1);}
-    variable4 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable4,COLOR_abstract_collection___SimpleCollection___add))(variable4,  variable3 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable3 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable3 /*n*/,  self) /*PNode::parent=*/;
-    continue_934: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
-  }
-  break_934: while(0);
-  ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  variable1 /*n_classid*/;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*n_classid*/ ==  NIT_NULL /*null*/) || (( variable1 /*n_classid*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*n_classid*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*n_classid*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*n_classid*/,COLOR_kernel___Object_____eqeq))( variable1 /*n_classid*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*n_classid*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*n_classid*/,  self) /*PNode::parent=*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    variable[3] = variable[0];
+    ((parser_prod___PNode___parent__eq_t)CALL( variable[1] /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable[1] /*n*/, variable[3]) /*PNode::parent=*/;
   }
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
+  return_label966: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10464, LOCATE_parser_prod___AQualified___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 10466); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 10878, LOCATE_parser_prod___AQualified___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10880); 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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TId, ID_TId)) /*cast TId*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 10470); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 10884); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label935;
-    }
-    continue_936: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
-  }
-  break_936: while(0);
-  variable2 = ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___AQualified___replace_child, LOCATE_parser_prod, 10482); nit_exit(1);}
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  variable1 /*new_child*/;
+      goto return_label967;
+    }
+    continue_968: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
+  }
+  break_968: 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::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[2] /*new_child*/ ==  NIT_NULL /*null*/) || (( variable[2] /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[2] /*new_child*/,COLOR_kernel___Object_____eqeq))( variable[2] /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[4] = variable[0];
+      ((parser_prod___PNode___parent__eq_t)CALL( variable[2] /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable[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, 10896); nit_exit(1);}
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AQualified____n_classid(variable[4]) /*AQualified::_n_classid*/ =  variable[2] /*new_child*/;
     } else { /*if*/
-      ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/ =  NIT_NULL /*null*/;
+      variable[4] = variable[0];
+      ATTR_parser_nodes___AQualified____n_classid(variable[4]) /*AQualified::_n_classid*/ =  NIT_NULL /*null*/;
     }
-    goto return_label935;
+    goto return_label967;
   }
-  return_label935: while(false);
+  return_label967: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10491, LOCATE_parser_prod___AQualified___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  struct trace_t trace = {NULL, NULL, 10905, LOCATE_parser_prod___AQualified___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  variable[0] =  self;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_938: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_970: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_938: while(0);
-  variable1 = ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_970: 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::==*/)))))));
+  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*/;
   }
+  return_label969: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___AQualified___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10501, LOCATE_parser_prod___AQualified___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 10915, LOCATE_parser_prod___AQualified___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  variable[0] =  self;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___AQualified____n_id( self) /*AQualified::_n_id*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_940: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_972: while(0);
   }
-  break_940: while(0);
-  variable1 = ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___AQualified____n_classid( self) /*AQualified::_n_classid*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  break_972: 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::==*/)))))));
+  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*/;
   }
+  return_label971: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoc___empty_init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10517, LOCATE_parser_prod___ADoc___empty_init};
+void parser_prod___AQualified___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10858, LOCATE_parser_prod___AQualified___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i]) return;
+  return_label973: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser_prod___ADoc___init_adoc(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10519, LOCATE_parser_prod___ADoc___init_adoc};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+void parser_prod___AQualified___init_aqualified(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10860, LOCATE_parser_prod___AQualified___init_aqualified};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i]) return;
-  ((parser_prod___ADoc___empty_init_t)CALL( self,COLOR_parser_prod___ADoc___empty_init))( self, init_table /*YYY*/) /*ADoc::empty_init*/;
-  variable1 = NEW_List_list___List___init(); /*new List[TComment]*/
-  ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/ = variable1;
-  variable1 = ((array___AbstractArray___iterator_t)CALL( variable0 /*n_comment*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*n_comment*/) /*AbstractArray::iterator*/;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*n*/==NIT_NULL) || VAL_ISA( variable2 /*n*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-    if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___init_adoc, LOCATE_parser_prod, 10526); nit_exit(1);}
-    variable3 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-    ((abstract_collection___IndexedCollection___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable2 /*n*/) /*IndexedCollection::add*/;
-    ((parser_prod___PNode___parent__eq_t)CALL( variable2 /*n*/,COLOR_parser_prod___PNode___parent__eq))( variable2 /*n*/,  self) /*PNode::parent=*/;
-    continue_943: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_943: while(0);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
+    variable[5] = ((array___ArrayIterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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, 10868); 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*/;
+    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=*/;
+    continue_975: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*ArrayIterator::next*/;
+  }
+  break_975: 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::==*/)))))));
+  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=*/;
+  }
+  return_label974: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_AQualified].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10532, LOCATE_parser_prod___ADoc___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___replace_child, LOCATE_parser_prod, 10534); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable3 = NEW_Range_range___Range___without_last( TAG_Int(0), variable2); /*new Range[Int]*/
-  variable2 = variable3;
-  variable2 = ((range___Range___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 10946, LOCATE_parser_prod___ADoc___replace_child};
+  val_t variable[8];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10948); 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[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*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*Iterator::item*/;
-    variable4 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-    variable4 = ((list___List_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable3 /*i*/) /*List::[]*/;
-    variable4 = TAG_Bool((variable4 ==  variable0 /*old_child*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*old_child*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable4 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-        if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___ADoc___replace_child, LOCATE_parser_prod, 10538); nit_exit(1);}
-        variable4 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-        ((list___List_____braeq_t)CALL(variable4,COLOR_abstract_collection___Map_____braeq))(variable4,  variable3 /*i*/,  variable1 /*new_child*/) /*List::[]=*/;
-        ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
+    variable[5] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[4],COLOR_abstract_collection___Iterator___is_ok))(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[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::==*/)))));
+    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::==*/)))))));
+      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, 10952); 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::[]=*/;
+        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=*/;
       } else { /*if*/
-        variable4 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-        ((list___List___remove_at_t)CALL(variable4,COLOR_abstract_collection___Map___remove_at))(variable4,  variable3 /*i*/) /*List::remove_at*/;
+        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*/;
       }
-      goto return_label944;
+      goto return_label976;
     }
-    continue_945: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*Iterator::next*/;
+    continue_977: while(0);
+    ((abstract_collection___Iterator___next_t)CALL(variable[4],COLOR_abstract_collection___Iterator___next))(variable[4]) /*Iterator::next*/;
   }
-  break_945: while(0);
-  return_label944: while(false);
+  break_977: while(0);
+  return_label976: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10549, LOCATE_parser_prod___ADoc___visit_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  struct trace_t trace = {NULL, NULL, 10963, LOCATE_parser_prod___ADoc___visit_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-  variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
+  variable[0] =  self;
+  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*/;
   while (true) { /*for*/
-    variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/,  variable2 /*n*/) /*Visitor::visit*/;
-    continue_947: while(0);
-    ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
+    variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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*/;
+    continue_979: while(0);
+    ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
   }
-  break_947: while(0);
+  break_979: while(0);
+  return_label978: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___ADoc___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10556, LOCATE_parser_prod___ADoc___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 10970, LOCATE_parser_prod___ADoc___visit_all_reverse};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable2 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-  variable2 = ((list___List___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*List::length*/;
-  variable1 = variable2;
+  variable[0] =  self;
+  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[3] = variable[4];
   while (true) { /*while*/
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable2 = ATTR_parser_nodes___ADoc____n_comment( self) /*ADoc::_n_comment*/;
-    variable2 = ((list___List_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2,  variable1 /*i*/) /*List::[]*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*Visitor::visit*/;
-    variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable1 = variable2 /*i=*/;
-    continue_949: while(0);
+    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] = TAG_Int(UNTAG_Int( variable[3] /*i*/)-UNTAG_Int( TAG_Int(1)));
+    variable[3] = variable[4] /*i=*/;
+    continue_981: while(0);
   }
-  break_949: while(0);
+  break_981: while(0);
+  return_label980: while(false);
   tracehead = trace.prev;
   return;
 }
-void parser_prod___Start___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10569, LOCATE_parser_prod___Start___init};
-  val_t variable0;
-  val_t variable1;
+void parser_prod___ADoc___empty_init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10931, LOCATE_parser_prod___ADoc___empty_init};
+  val_t variable[2];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Start].i]) return;
-  ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/ =  variable0 /*n_base*/;
-  ATTR_parser_nodes___Start____n_eof( self) /*Start::_n_eof*/ =  variable1 /*n_eof*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Start].i] = 1;
+  variable[0] =  self;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i]) return;
+  return_label982: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___ADoc___init_adoc(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10933, LOCATE_parser_prod___ADoc___init_adoc};
+  val_t variable[7];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ( self)->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*/;
+  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*/;
+  while (true) { /*for*/
+    variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(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[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, 10940); 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*/;
+    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=*/;
+    continue_984: while(0);
+    ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_984: while(0);
+  return_label983: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ADoc].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___replace_child(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 10577, LOCATE_parser_prod___Start___replace_child};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*old_child*/ ==  NIT_NULL /*null*/) || (( variable0 /*old_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*old_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*old_child*/,COLOR_kernel___Object_____eqeq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 10579); nit_exit(1);}
-  variable2 = ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/;
-  variable2 = TAG_Bool((variable2 ==  variable0 /*old_child*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*old_child*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  variable0 /*old_child*/) /*Object::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = TAG_Bool(( variable1 /*new_child*/ ==  NIT_NULL /*null*/) || (( variable1 /*new_child*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*new_child*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*new_child*/,COLOR_kernel___Object_____eqeq))( variable1 /*new_child*/,  NIT_NULL /*null*/) /*Object::==*/)))));
-    if (UNTAG_Bool(variable2)) { /*if*/
-    } else { /*if*/
-      ((parser_prod___PNode___parent__eq_t)CALL( variable1 /*new_child*/,COLOR_parser_prod___PNode___parent__eq))( variable1 /*new_child*/,  self) /*PNode::parent=*/;
-      variable2 = TAG_Bool(( variable1 /*new_child*/==NIT_NULL) || VAL_ISA( variable1 /*new_child*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
-      if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser_prod___Start___replace_child, LOCATE_parser_prod, 10584); nit_exit(1);}
-      ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/ =  variable1 /*new_child*/;
-    }
-    ((parser_prod___PNode___parent__eq_t)CALL( variable0 /*old_child*/,COLOR_parser_prod___PNode___parent__eq))( variable0 /*old_child*/,  NIT_NULL /*null*/) /*PNode::parent=*/;
-    goto return_label951;
+  struct trace_t trace = {NULL, NULL, 10991, LOCATE_parser_prod___Start___replace_child};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  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::==*/)))))));
+  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, 10993); 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::==*/)))));
+  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::==*/)))));
+    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=*/;
+      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, 10998); 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=*/;
+    goto return_label985;
   }
-  return_label951: while(false);
+  return_label985: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___visit_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10592, LOCATE_parser_prod___Start___visit_all};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11006, LOCATE_parser_prod___Start___visit_all};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label986: while(false);
   tracehead = trace.prev;
   return;
 }
 void parser_prod___Start___visit_all_reverse(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10599, LOCATE_parser_prod___Start___visit_all_reverse};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 11013, LOCATE_parser_prod___Start___visit_all_reverse};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
   trace.file = LOCATE_parser_prod;
-  variable0 =  param0;
-  variable1 = ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    variable1 = ATTR_parser_nodes___Start____n_base( self) /*Start::_n_base*/;
-    ((parser_prod___Visitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*Visitor::visit*/;
+  variable[0] =  self;
+  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::==*/)))))));
+  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*/;
   }
+  return_label987: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void parser_prod___Start___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 10983, LOCATE_parser_prod___Start___init};
+  val_t variable[5];
+  void **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_parser_prod;
+  variable[0] =  self;
+  variable[1] =  param0;
+  variable[2] =  param1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Start].i]) return;
+  variable[4] = variable[0];
+  ATTR_parser_nodes___Start____n_base(variable[4]) /*Start::_n_base*/ =  variable[1] /*n_base*/;
+  variable[4] = variable[0];
+  ATTR_parser_nodes___Start____n_eof(variable[4]) /*Start::_n_eof*/ =  variable[2] /*n_eof*/;
+  return_label988: while(false);
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Start].i] = 1;
   tracehead = trace.prev;
   return;
 }